API ์†Œ๊ฐœ

Prev Next

API์˜ ์œ„๋Œ€ํ•œ ์„ธ๊ณ„์— ์˜ค์‹  ๊ฒƒ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค!

์ด ๋ฌธ์„œ์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‚ด์šฉ์„ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค:* API๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”* RESTful API๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”* Tulip์˜ API๋กœ ์ž‘์—…ํ•˜๋Š” ๋ฐฉ๋ฒ•


API๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

API (์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ธํ„ฐํŽ˜์ด์Šค)๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์†Œํ”„ํŠธ์›จ์–ด ์ปดํฌ๋„ŒํŠธ๊ฐ€ ํ†ต์‹ ํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ํ”„๋กœํ† ์ฝœ ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ์ž๋Š” API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘๊ณ  ๊ฐœ๋ณ„์ ์ธ ์ฝ”๋“œ ๋ฉ์–ด๋ฆฌ ์‚ฌ์ด์˜ ๊ฐ„๊ทน์„ ๋ฉ”์›Œ ๊ฐ•๋ ฅํ•˜๊ณ  ํƒ„๋ ฅ์ ์ด๋ฉฐ ์•ˆ์ „ํ•˜๋ฉฐ ์‚ฌ์šฉ์ž ์š”๊ตฌ๋ฅผ ์ถฉ์กฑํ•  ์ˆ˜ ์žˆ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

API์—๋Š” ๋„ค ๊ฐ€์ง€ ํ•ต์‹ฌ ๋ถ€๋ถ„์ด ์žˆ์Šต๋‹ˆ๋‹ค.1. API ํด๋ผ์ด์–ธํŠธ - API ์š”์ฒญ์„ ์‹œ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•.2. API ์š”์ฒญ - API๊ฐ€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋„๋ก ์š”์ฒญํ•˜๋Š” ๊ฒƒ.3. API ์„œ๋ฒ„ - ์š”์ฒญ์˜ ์ถœ์ฒ˜์™€ ์š”์ฒญ์ด ์ œ๋Œ€๋กœ ์ž‘์„ฑ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์š”์ฒญ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ฑฐ๋‚˜ ์กฐ์ž‘ํ•˜๋Š” ๊ฒƒ.4. API ์‘๋‹ต - ์‚ฌ์šฉ์ž(ํด๋ผ์ด์–ธํŠธ)์—๊ฒŒ ๋˜๋Œ์•„์˜ค๋Š” ์‘๋‹ต์ž…๋‹ˆ๋‹ค.

API ์š”์ฒญ

API ์š”์ฒญ์€ ํฌ๊ฒŒ ๋‹ค์„ฏ ๊ฐ€์ง€๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค:

  • ์—”๋“œํฌ์ธํŠธ: ํŠน์ • ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ์ „์šฉ URL์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด /tables ์—”๋“œํฌ์ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋“  ํŠค๋ฆฝ ํ…Œ์ด๋ธ”์„ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ ์ƒˆ ํŠค๋ฆฝ ํ…Œ์ด๋ธ”์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฉ”์„œ๋“œ: API๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋ ค๋Š” ์ž‘์—… ์œ ํ˜•์ž…๋‹ˆ๋‹ค. Tulip์€ REST API๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ GET, PUT, POST ๋ฐ DELETE๋กœ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค.
  • ํŒŒ๋ผ๋ฏธํ„ฐ: API๊ฐ€ ์ฒ˜๋ฆฌํ•  ํŠน์ • ์ง€์นจ์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด API ์—”๋“œํฌ์ธํŠธ๋กœ ์ „๋‹ฌ๋˜๋Š” ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค. ์•ž์˜ /tables ์—”๋“œํฌ์ธํŠธ ์˜ˆ์ œ์—์„œ ํ™•์žฅํ•˜์—ฌ, /tables/{tableId}๋ฅผ ํ†ตํ•ด ํŠน์ • ํ…Œ์ด๋ธ” ID๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€๋กœ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์ฟผ๋ฆฌ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์š”์ฒญ ํ—ค๋”: ์ฝ˜ํ…์ธ  ์œ ํ˜•์ด๋‚˜ ์ธ์ฆ ์ž๊ฒฉ ์ฆ๋ช… ๋“ฑ ์š”์ฒญ์— ๋Œ€ํ•œ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š” ํ‚ค-๊ฐ’ ์Œ์ž…๋‹ˆ๋‹ค.
  • ์š”์ฒญ ๋ณธ๋ฌธ: ๋ฆฌ์†Œ์Šค๋ฅผ ์ƒ์„ฑ, ์—…๋ฐ์ดํŠธ ๋˜๋Š” ์‚ญ์ œํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ž์„ธํžˆ ์„ค๋ช…ํ•˜๋Š” ์š”์ฒญ์˜ ์ฃผ์š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์Šคํ…Œ์ด์…˜ URL์—์„œ ์ƒˆ ์Šคํ…Œ์ด์…˜์„ ์š”์ฒญํ•˜๊ณ  ์–ด๋–ค ์Šคํ…Œ์ด์…˜ ๊ทธ๋ฃน์— ์†ํ•ด์•ผ ํ•˜๋Š”์ง€, ์–ด๋–ค ์•ฑ์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์ž์„ธํžˆ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

API ์‘๋‹ต

REST ์š”์ฒญ์„ ์„ฑ๊ณต์ ์œผ๋กœ ๊ตฌ์„ฑํ•˜์—ฌ ์ „์†กํ•˜๋ฉด ์„œ๋ฒ„๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์‘๋‹ต์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค:

  • ์ƒํƒœ ์ฝ”๋“œ: API ์š”์ฒญ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” 3์ž๋ฆฌ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.
  • ์‘๋‹ต ํ—ค๋”: ์„œ๋ฒ„์˜ ์‘๋‹ต์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ์‘๋‹ต ๋ณธ๋ฌธ: ์‘๋‹ต ๋ณธ๋ฌธ์—๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญํ•œ ์‹ค์ œ ๋ฐ์ดํ„ฐ๋‚˜ ์ฝ˜ํ…์ธ , ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์ธ HTTP ์ƒํƒœ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

200 OK: ์š”์ฒญ์ด ์„ฑ๊ณตํ–ˆ์œผ๋ฉฐ ์‘๋‹ต ๋ณธ๋ฌธ์— ์š”์ฒญ๋œ ๋ฆฌ์†Œ์Šค๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค**.404 ์ฐพ์„ ์ˆ˜ ์—†์Œ**: URL์„ ์ž˜๋ชป ์ž…๋ ฅํ–ˆ๊ฑฐ๋‚˜ ๋ฆฌ์†Œ์Šค๊ฐ€ ์ด๋™ ๋˜๋Š” ์‚ญ์ œ๋˜์–ด ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค**.400 ์ž˜๋ชป๋œ ์š”์ฒญ**: ์ž˜๋ชป๋œ ๊ตฌ๋ฌธ์ด๋‚˜ ์š”์ฒญ์— ํ•„์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ˆ„๋ฝ ๋“ฑ์˜ ํด๋ผ์ด์–ธํŠธ ์˜ค๋ฅ˜๋กœ ์ธํ•ด ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค**.500 ๋‚ด๋ถ€ ์„œ๋ฒ„ ์˜ค๋ฅ˜**: ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋Š” ์˜ˆ๊ธฐ์น˜ ์•Š์€ ์กฐ๊ฑด(์ผ๋ฐ˜์ ์œผ๋กœ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ œ์–ดํ•  ์ˆ˜ ์—†๋Š” ์„œ๋ฒ„ ์ธก ๋ฌธ์ œ)์ด ๋ฐœ์ƒํ–ˆ์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค**.302 ๋ฐœ๊ฒฌ๋จ(์ผ์‹œ์ ์œผ๋กœ ์ด๋™๋จ**): ์š”์ฒญ๋œ ๋ฆฌ์†Œ์Šค๊ฐ€ ์ผ์‹œ์ ์œผ๋กœ ๋‹ค๋ฅธ URL๋กœ ์ด๋™๋˜์—ˆ์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ์‘๋‹ต ํ—ค๋”์— ์ œ๊ณต๋œ ์ƒˆ URL๋กœ ๋‹ค์‹œ ์š”์ฒญํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค**.401 ๊ถŒํ•œ์ด ์—†์Œ**: ์š”์ฒญ์— ์‚ฌ์šฉ์ž ์ธ์ฆ์ด ํ•„์š”ํ•˜์ง€๋งŒ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์œ ํšจํ•œ ์ž๊ฒฉ ์ฆ๋ช…์„ ์ œ๊ณตํ•˜์ง€ ์•Š์•˜๊ฑฐ๋‚˜ ์•„์ง ์ธ์ฆํ•˜์ง€ ์•Š์•˜์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

HTTP ์˜ค๋ฅ˜ ์ฝ”๋“œ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์—ฌ๊ธฐ์—์„œ ํ™•์ธํ•˜์„ธ์š”.

RESTful API๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

Tulip์€ RESTful API๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์œ ํ˜•์˜ API๋กœ๋Š” SOAP, GraphQL, Webbhook ๋˜๋Š” gRPC ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

RESTful API๋ผ๊ณ ๋„ ํ•˜๋Š” REST API๋Š” ์›น URL์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ, ์ฝ˜ํ…์ธ , ์•Œ๊ณ ๋ฆฌ์ฆ˜, ๋ฏธ๋””์–ด ๋ฐ ๊ธฐํƒ€ ๋””์ง€ํ„ธ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ„๋‹จํ•˜๊ณ  ํ†ต์ผ๋œ ์ธํ„ฐํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค. REST API๋Š” ์˜ค๋Š˜๋‚  ์›น์—์„œ ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” API์ž…๋‹ˆ๋‹ค.

REST API๋Š” ๋„ค ๊ฐ€์ง€ ์ฃผ์š” ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.1. GET: ์ด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ์„œ๋ฒ„๊ฐ€ ์š”์ฒญํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์•„์„œ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋‹ค์‹œ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.2. PUT: PUT ์š”์ฒญ์„ ์ˆ˜ํ–‰ํ•˜๋ฉด ์„œ๋ฒ„๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ•ญ๋ชฉ์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.3. POST: ์„œ๋ฒ„๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ƒˆ ํ•ญ๋ชฉ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.4. DELETE: ์„œ๋ฒ„๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ•ญ๋ชฉ์„ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Tulip์˜ API๋กœ ์ž‘์—…ํ•˜๋Š” ๋ฐฉ๋ฒ•

๋‹ค์Œ ๋ฌธ์„œ๋ฅผ ์ฝ๊ณ  Tulip์—์„œ API ์‚ฌ์šฉ ๋ฐ ํ…Œ์ŠคํŠธ๋ฅผ ์‹œ์ž‘ํ•˜์„ธ์š”:


์›ํ•˜๋Š” ๊ฒƒ์„ ์ฐพ์•˜๋‚˜์š”?

community.tulip.co๋กœ ์ด๋™ํ•˜์—ฌ ์งˆ๋ฌธ์„ ๊ฒŒ์‹œํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ๋น„์Šทํ•œ ์งˆ๋ฌธ์„ ํ–ˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค!