Home > Backend Development > ๐Ÿ“š[Backend Development] API ๋ช…์„ธ์„œ ์ž‘์„ฑ์„ ๋’ท๋ฐ›์นจํ•˜๋Š” ํ•ต์‹ฌ์ ์ธ ๊ฐœ๋…๋“ค

๐Ÿ“š[Backend Development] API ๋ช…์„ธ์„œ ์ž‘์„ฑ์„ ๋’ท๋ฐ›์นจํ•˜๋Š” ํ•ต์‹ฌ์ ์ธ ๊ฐœ๋…๋“ค
Backend Development API API Specification API Documentaion

๐Ÿ“š[Backend Development] API ๋ช…์„ธ์„œ ์ž‘์„ฑ์„ ๋’ท๋ฐ›์นจํ•˜๋Š” ํ•ต์‹ฌ์ ์ธ ๊ฐœ๋…๋“ค

โœ… 1. API ๋ช…์„ธ์„œ ์ž‘์„ฑ ์‹œ ์‚ฌ์šฉ์ž์˜ ํŽธ์˜์„ฑ์„ ๋งŒ์กฑํ•˜๊ฒŒ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š” ์ด์œ .

API์˜ โ€˜์‚ฌ์šฉ์žโ€™๋Š” ์ผ๋ฐ˜ ๊ณ ๊ฐ์ด ์•„๋‹ˆ๋ผ, ์ด API๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๊ฐœ๋ฐœํ•˜๋Š” ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž(ํ”„๋ก ํŠธ์—”๋“œ, ๋ชจ๋ฐ”์ผ ์•ฑ ๋“ฑ)์ž…๋‹ˆ๋‹ค.
์ด๋“ค์˜ ํŽธ์˜์„ฑ์„ ๋งŒ์กฑ์‹œ์ผœ์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ๊ฐœ๋ฐœ ์ „์ฒด์˜ ์ƒ์‚ฐ์„ฑ๊ณผ ์•ˆ์ •์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค.

  • ์ƒ์‚ฐ์„ฑ ํ–ฅ์ƒ : API๊ฐ€ ์ง๊ด€์ ์ด๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ ํŽธ๋ฆฌํ•˜๋ฉด, ํด๋ผ์ด์–ธํŠธ ๊ฐœ๋ฐœ์ž๋Š” ๋ถˆํ•„์š”ํ•œ ์งˆ๋ฌธ์ด๋‚˜ ์ถ”์ธก ์—†์ด ๋น ๋ฅด๊ฒŒ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ „์ฒด ํ”„๋กœ์ ํŠธ์˜ ๊ฐœ๋ฐœ ์†๋„๋ฅผ ๋†’์ž…๋‹ˆ๋‹ค.
  • ์˜ค๋ฅ˜ ๊ฐ์†Œ : API์˜ ๋™์ž‘ ๋ฐฉ์‹์ด ์˜ˆ์ธก ๊ฐ€๋Šฅํ•˜๊ณ  ์ผ๊ด€๋˜๋ฉด(์˜ˆ: ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋Š” ํ•ญ์ƒ ๋ฐฐ์—ด), ํด๋ผ์ด์–ธํŠธ ๊ฐœ๋ฐœ์ž๊ฐ€ ์‹ค์ˆ˜ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์ค„์–ด๋“ค์–ด ๋ฒ„๊ทธ ๋ฐœ์ƒ๋ฅ ์ด ๋‚ฎ์•„์ง‘๋‹ˆ๋‹ค.
  • ์‰ฌ์šด ์œ ์ง€๋ณด์ˆ˜ : ์ž˜ ์„ค๊ณ„๋œ API๋Š” ๋‚˜์ค‘์— ๊ธฐ๋Šฅ์„ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ ํ™•์žฅํ•  ๋•Œ๋„ ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์›Œ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์šฉ์ดํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ๋ก  : ๋™๋ฃŒ ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ โ€˜์ข‹์€ ๋„๊ตฌโ€™๋ฅผ ๋งŒ๋“ ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ข‹์€ ๋„๊ตฌ๋Š” ์‚ฌ์šฉํ•˜๊ธฐ ํŽธํ•˜๊ณ , ์‹ค์ˆ˜๋ฅผ ์ค„์—ฌ์ฃผ๋ฉฐ, ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋” ๋‚˜์€ ๊ฒฐ๊ณผ๋ฌผ์„ ๋” ๋นจ๋ฆฌ ๋งŒ๋“ค๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.

โœ… 2. ๋ฐ์ดํ„ฐ์˜ ์ •ํ•ฉ์„ฑ์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

๋ฐ์ดํ„ฐ์˜ ์ •ํ•ฉ์„ฑ(Data Integrity) ์ด๋ž€, ๋ฐ์ดํ„ฐ๊ฐ€ ํŠน์ • ์กฐ๊ฑด์ด๋‚˜ ๊ทœ์น™์„ ํ•ญ์ƒ ๋งŒ์กฑํ•˜์—ฌ ๋ชจ์ˆœ ์—†์ด ์ •ํ™•ํ•˜๊ณ  ์ผ๊ด€๋œ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

  • ์˜ˆ์‹œ 1: โ€˜์žฌ๊ณ โ€™ ๋ฐ์ดํ„ฐ๋Š” ์Œ์ˆ˜(-)๊ฐ€ ๋  ์ˆ˜ ์—†๋‹ค๋Š” ๊ทœ์น™์„ ํ•ญ์ƒ ์ง€์ผœ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์˜ˆ์‹œ 2: โ€˜์ฃผ๋ฌธโ€™๋‚ด์—ญ์— ์žˆ๋Š” productId๋Š” ๋ฐ˜๋“œ์‹œ โ€˜์ƒํ’ˆโ€™ํ…Œ์ด๋ธ”์— ์‹ค์ œ๋กœ ์กด์žฌํ•˜๋Š” ID์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์˜ˆ์‹œ 3: ์ด์ต๋ฅ (margin)์€ ํ•ญ์ƒ ์‹ค์ œ ๊ฐ€๊ฒฉ ๋ฐ์ดํ„ฐ์— ๊ธฐ๋ฐ˜ํ•œ ๊ณ„์‚ฐ ๊ฒฐ๊ณผ์™€ ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ๋ก  : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์† ๋ฐ์ดํ„ฐ๋“ค์ด ์„œ๋กœ ์ถฉ๋Œํ•˜๊ฑฐ๋‚˜ ๋…ผ๋ฆฌ์ ์œผ๋กœ ๋ง์ด ์•ˆ ๋˜๋Š” ์ƒํ™ฉ ์—†์ด, ์–ธ์ œ๋‚˜ โ€˜์˜ฌ๋ฐ”๋ฅธโ€™ ์ƒํƒœ๋กœ ์กด์žฌํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

โœ… 3. API ๋ช…์„ธ์„œ ์ž‘์„ฑ ์‹œ ๋ฐ์ดํ„ฐ์˜ ์ •ํ•ฉ์„ฑ์„ ๋งŒ์กฑํ•˜๊ฒŒ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š” ์ด์œ .

API๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ โ€˜๋ฌธ์ง€๊ธฐโ€™ ์—ญํ• ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
API์˜ ์„ค๊ณ„๋Š” ๋ฐ์ดํ„ฐ์˜ ์ •ํ•ฉ์„ฑ์„ ์ง€ํ‚ค๊ฑฐ๋‚˜ ๊นจ๋œจ๋ฆฌ๋Š” ๋ฐ ๊ฒฐ์ •์ ์ธ ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค.

  • ์ž˜๋ชป๋œ ๋ฐ์ดํ„ฐ ๋ฐฉ์ง€ : API๋Š” ์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ฆํ•˜์—ฌ, ์ •ํ•ฉ์„ฑ์„ ํ•ด์น˜๋Š” ๋ฐ์ดํ„ฐ(์˜ˆ: ์žฌ๊ณ ๋ฅผ ์Œ์ˆ˜๋กœ ๋งŒ๋“ค๋ ค๋Š” ์š”์ฒญ)๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋˜์ง€ ์•Š๋„๋ก ๋ง‰์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ํŠธ๋žœ์žญ์…˜ ๋ณด์žฅ : โ€˜์ƒํ’ˆ ๋“ฑ๋ก๊ณผ ์ดˆ๊ธฐ ์žฌ๊ณ  ์ž…๋ ฅโ€™์ฒ˜๋Ÿผ ์—ฌ๋Ÿฌ ์ž‘์—…์„ ํ•˜๋‚˜๋กœ ๋ฌถ์–ด, ๋ชจ๋‘ ์„ฑ๊ณตํ•˜๊ฑฐ๋‚˜ ๋ชจ๋‘ ์‹คํŒจํ•˜๊ฒŒ ๋งŒ๋“ค์–ด ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชจ์ˆœ๋œ ์ƒํƒœ๋กœ ๋‚จ์ง€ ์•Š๋„๋ก ๋ณด์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ณ„์‚ฐ๋œ ๊ฐ’ ๋ณดํ˜ธ : margin์ด๋‚˜ totalStockCount์ฒ˜๋Ÿผ ๊ณ„์‚ฐ๋˜๋Š” ๊ฐ’์„ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ง์ ‘ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๋„๋ก API๋ฅผ ์„ค๊ณ„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ค์ง ์›๋ณธ ๋ฐ์ดํ„ฐ(๊ฐ€๊ฒฉ, ์žฌ๊ณ ๋Ÿ‰ ๋“ฑ)๋งŒ ์ˆ˜์ • ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜์—ฌ ์ •ํ•ฉ์„ฑ์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ๋ก : API๋Š” ๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ์„ ์ง€ํ‚ค๊ธฐ ์œ„ํ•œ ๊ทœ์น™์„ ๊ฐ•์ œํ•˜๋Š” ์ตœ์ „์„ฑ์ž…๋‹ˆ๋‹ค. API ์„ค๊ณ„๊ฐ€ ํ—ˆ์ˆ ํ•˜๋ฉด, ์‹œ์Šคํ…œ ์ „์ฒด์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ง๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โœ… 4. RESTful ๋””์ž์ธ ์›์น™์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

RESTful ๋””์ž์ธ ์›์น™์€ ์›น ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์ผ์ข…์˜ โ€˜๋ชจ๋ฒ” ์„ค๊ณ„ ์–‘์‹โ€™ ๋˜๋Š” โ€˜๊ฐ€์ด๋“œ๋ผ์ธโ€™์ž…๋‹ˆ๋‹ค.
์ด ์›์น™์„ ๋”ฐ๋ฅด๋ฉด ๋ˆ„๊ตฌ๋‚˜ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ณ , ํ™•์žฅํ•˜๊ธฐ ํŽธํ•˜๋ฉฐ, ์ผ๊ด€๋œ API๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํ•ต์‹ฌ์ ์ธ ์›์น™์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ์ž์›(Resource) : ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋Š” ์ƒํ’ˆ, ์ฃผ๋ฌธ๊ณผ ๊ฐ™์€ โ€˜์ž์›โ€™์œผ๋กœ ํ‘œํ˜„๋˜๋ฉฐ, ๊ฐ ์ž์›์€ ๊ณ ์œ ํ•œ URL ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.(์˜ˆ: /products, /products/123)
  2. ํ–‰์œ„(Verd) : ์ž์›์— ๋Œ€ํ•œ ํ–‰์œ„๋Š” HTTP Method(GET, POST, PUT, PATCH, DELETE)๋กœ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.(์˜ˆ: GET /products - ์ƒํ’ˆ ์กฐํšŒ)
  3. ํ‘œํ˜„(Representation) : ์ž์›์˜ ์ƒํƒœ๋Š” JSON์ด๋‚˜ XML ๊ฐ™์€ ํ˜•ํƒœ๋กœ ์ฃผ๊ณ ๋ฐ›์Šต๋‹ˆ๋‹ค.

๊ฒฐ๋ก  : โ€˜URL๋กœ๋Š” ๋Œ€์ƒ์„ ํ‘œํ˜„ํ•˜๊ณ , HTTP Method๋กœ๋Š” ํ–‰์œ„๋ฅผ ํ‘œํ˜„ํ•˜์žโ€™ ๋Š” ๊ฒƒ์ด RESTful ๋””์ž์ธ์˜ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ์ฒ ํ•™์ž…๋‹ˆ๋‹ค.

โœ… 5. API ๋ช…์„ธ์„œ ์ž‘์„ฑ ์‹œ RESTful ๋””์ž์ธ ์›์น™์„ ๋งŒ์กฑํ•˜๊ฒŒ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š” ์ด์œ .

RESTful ๋””์ž์ธ ์›์น™์€ ์ „ ์„ธ๊ณ„ ๊ฐœ๋ฐœ์ž๋“ค ์‚ฌ์ด์˜ โ€˜๊ณตํ†ต ์–ธ์–ดโ€™ ๋˜๋Š” โ€˜๋ฌธ๋ฒ•โ€™ ๊ณผ ๊ฐ™๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

  • ์˜ˆ์ธก ๊ฐ€๋Šฅ์„ฑ : GET /products/1 ์ด๋ผ๋Š” URL๋งŒ ๋ด๋„, ๊ฐœ๋ฐœ์ž ๋ˆ„๊ตฌ๋‚˜ โ€˜1๋ฒˆ ์ƒํ’ˆ์˜ ์ •๋ณด๋ฅผ ์กฐํšŒํ•˜๋Š”๊ตฌ๋‚˜โ€™๋ผ๊ณ  ์‰ฝ๊ฒŒ ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” API๋ฅผ ๋ฐฐ์šฐ๊ณ  ์‚ฌ์šฉํ•˜๋Š” ์‹œ๊ฐ„์„ ํฌ๊ฒŒ ๋‹จ์ถ•์‹œํ‚ต๋‹ˆ๋‹ค.
  • ํ”Œ๋žซํผ ๋…๋ฆฝ์„ฑ : ์›น, ๋ชจ๋ฐ”์ผ ์•ฑ, ๋‹ค๋ฅธ ์„œ๋ฒ„ ๋“ฑ HTTP ํ†ต์‹ ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ์–ด๋–ค ํด๋ผ์ด์–ธํŠธ๋“  ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ API๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ™•์žฅ์„ฑ : ๋ช…ํ™•ํ•œ ๊ทœ์น™๊ณผ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๋ฏ€๋กœ, ๋‚˜์ค‘์— ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‹œ์Šคํ…œ์„ ํ™•์žฅํ•  ๋•Œ ๋” ์ˆ˜์›”ํ•ฉ๋‹ˆ๋‹ค.
  • ์ผ๊ด€์„ฑ : ํ”„๋กœ์ ํŠธ ๋‚ด ๋ชจ๋“  API๊ฐ€ ๋™์ผํ•œ ๊ทœ์น™์„ ๋”ฐ๋ฅด๋ฏ€๋กœ, ์ „์ฒด์ ์ธ ์ฝ”๋“œ์˜ ํ’ˆ์งˆ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์ด ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค.

๊ฒฐ๋ก  : ์šฐ๋ฆฌ๊ฐ€ ๋งž์ถค๋ฒ•๊ณผ ๋ฌธ๋ฒ•์— ๋งž์ถฐ ๊ธ€์„ ์“ฐ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ, API๋„ RESTful์ด๋ผ๋Š” โ€˜๋ฌธ๋ฒ•โ€™์— ๋งž์ถฐ ์ž‘์„ฑํ•ด์•ผ ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๋“ค์ด ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ณ  ํ˜‘์—…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.