HTTP ์ƒํƒœ ์ฝ”๋“œ(Status Code) ์ •๋ฆฌ

HTTP ์ƒํƒœ ์ฝ”๋“œ ์™„์ „ ์ •๋ฆฌ. 200, 404, 500์€ ์•Œ๊ฒ ๋Š”๋ฐ 401๊ณผ 403์˜ ์ฐจ์ด๋Š”? 204๋Š” ์–ธ์ œ ์“ฐ์ง€? ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๊ฐ€ API๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ ๊ผญ ์•Œ์•„์•ผ ํ•  HTTP ์ƒํƒœ ์ฝ”๋“œ๋ฅผ, ์ž์ฃผ ์“ฐ๋Š” ๊ฒƒ ์œ„์ฃผ๋กœ ์‹ค๋ฌด ๊ธฐ์ค€๊ณผ ํ•จ๊ป˜ ์ •๋ฆฌํ•œ๋‹ค.


๋“ค์–ด๊ฐ€๋ฉฐ

API๋ฅผ ๋งŒ๋“ค๋‹ค ๋ณด๋ฉด "์ด ์ƒํ™ฉ์—” ๋ฌด์Šจ ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ์ค˜์•ผ ํ•˜์ง€?" ํ•˜๊ณ  ๋ฉˆ์นซํ•˜๋Š” ์ˆœ๊ฐ„์ด ์˜จ๋‹ค. ์„ฑ๊ณต์ด๋ฉด 200, ๋ชป ์ฐพ์œผ๋ฉด 404 ์ •๋„๋Š” ์™ธ์šฐ์ง€๋งŒ, ๋ง‰์ƒ "์ž˜๋ชป๋œ ์š”์ฒญ์ธ๋ฐ 401์ด์•ผ 400์ด์•ผ?", "์‚ญ์ œ ์„ฑ๊ณต์€ 200์ด์•ผ 204์•ผ?" ๊ฐ™์€ ๋ฐ์„œ ํ—ท๊ฐˆ๋ฆฐ๋‹ค.

HTTP ์ƒํƒœ ์ฝ”๋“œ๋Š” ๋‹จ์ˆœํ•œ ์ˆซ์ž๊ฐ€ ์•„๋‹ˆ๋ผ, ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๊ฒฐ๊ณผ๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ์•ฝ์†๋œ ์–ธ์–ด๋‹ค. ์ œ๋Œ€๋กœ ์“ฐ๋ฉด API๋ฅผ ์“ฐ๋Š” ์‚ฌ๋žŒ์ด ์‘๋‹ต๋งŒ ๋ณด๊ณ ๋„ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚ฌ๋Š”์ง€ ์•ˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ ์•„๋ฌด ์ฝ”๋“œ๋‚˜ ๋˜์ง€๋ฉด(๋‹ค 200์œผ๋กœ ์ฃผ๊ฑฐ๋‚˜) API์˜ ์‹ ๋ขฐ๋„๊ฐ€ ๋–จ์–ด์ง„๋‹ค.

์ข‹์€ API๋Š” ์ƒํƒœ ์ฝ”๋“œ๋งŒ ๋ด๋„ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚ฌ๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์ƒํƒœ ์ฝ”๋“œ๋Š” ์‘๋‹ต์˜ ์š”์•ฝ์ด๋‹ค.

์ด ๊ธ€์—์„œ๋Š” HTTP ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ๋ถ„๋ฅ˜๋ณ„๋กœ, ๊ทธ๋ฆฌ๊ณ  ์‹ค๋ฌด์—์„œ ์ž์ฃผ ์“ฐ๋Š” ๊ฒƒ ์œ„์ฃผ๋กœ ์ •๋ฆฌํ•œ๋‹ค.


5๊ฐœ์˜ ํฐ ๋ถ„๋ฅ˜

์ƒํƒœ ์ฝ”๋“œ๋Š” ์„ธ ์ž๋ฆฌ ์ˆซ์ž์ด๊ณ , ๋งจ ์•ž์ž๋ฆฌ๊ฐ€ ๊ทธ ์„ฑ๊ฒฉ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์ด๊ฒƒ๋งŒ ์•Œ์•„๋„ ์ ˆ๋ฐ˜์€ ์•ˆ๋‹ค.

๋ถ„๋ฅ˜ ์˜๋ฏธ ํ•œ ์ค„ ์š”์•ฝ
1xx ์ •๋ณด ์š”์ฒญ์„ ๋ฐ›์•˜๊ณ  ์ฒ˜๋ฆฌ ์ค‘ (๊ฑฐ์˜ ์ง์ ‘ ์•ˆ ์”€)
2xx ์„ฑ๊ณต ์š”์ฒญ์ด ์ •์ƒ ์ฒ˜๋ฆฌ๋จ
3xx ๋ฆฌ๋‹ค์ด๋ ‰์…˜ ๋‹ค๋ฅธ ๊ณณ์œผ๋กœ ์ด๋™ํ•ด์•ผ ํ•จ
4xx ํด๋ผ์ด์–ธํŠธ ์˜ค๋ฅ˜ ์š”์ฒญํ•œ ์ชฝ์˜ ์ž˜๋ชป
5xx ์„œ๋ฒ„ ์˜ค๋ฅ˜ ์„œ๋ฒ„ ์ชฝ์˜ ์ž˜๋ชป

ํ•ต์‹ฌ์€ 4xx์™€ 5xx์˜ ๊ตฌ๋ถ„์ด๋‹ค. 4xx๋Š” "๋„ค๊ฐ€ ์ž˜๋ชป ๋ณด๋ƒˆ์–ด"(ํด๋ผ์ด์–ธํŠธ ์ฑ…์ž„), 5xx๋Š” "๋‚ด๊ฐ€ ์ฒ˜๋ฆฌํ•˜๋‹ค ํ„ฐ์กŒ์–ด"(์„œ๋ฒ„ ์ฑ…์ž„)๋‹ค. ์ด ๊ตฌ๋ถ„๋งŒ ๋ช…ํ™•ํ•ด๋„ API๊ฐ€ ํ›จ์”ฌ ์ฝ๊ธฐ ์‰ฌ์›Œ์ง„๋‹ค.


2xx — ์„ฑ๊ณต

์š”์ฒญ์ด ์„ฑ๊ณตํ–ˆ์„ ๋•Œ๋‹ค. ๊ทธ๋ƒฅ ๋‹ค 200์œผ๋กœ ์ฃผ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์€๋ฐ, ์ƒํ™ฉ์— ๋งž๊ฒŒ ๋‚˜๋ˆ  ์“ฐ๋ฉด ๋” ๋ช…ํ™•ํ•˜๋‹ค.

์ฝ”๋“œ ์ด๋ฆ„ ์–ธ์ œ ์“ฐ๋‚˜
200 OK ์ผ๋ฐ˜์ ์ธ ์„ฑ๊ณต (์กฐํšŒ, ์ˆ˜์ • ๋“ฑ)
201 Created ๋ฆฌ์†Œ์Šค ์ƒ์„ฑ ์„ฑ๊ณต (POST๋กœ ์ƒˆ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ)
202 Accepted ์š”์ฒญ์€ ๋ฐ›์•˜์œผ๋‚˜ ์ฒ˜๋ฆฌ๋Š” ์•„์ง (๋น„๋™๊ธฐ ์ž‘์—…)
204 No Content ์„ฑ๊ณตํ–ˆ์ง€๋งŒ ์‘๋‹ต ๋ณธ๋ฌธ์ด ์—†์Œ (์‚ญ์ œ ๋“ฑ)

์‹ค๋ฌด ํฌ์ธํŠธ๋ฅผ ์งš์œผ๋ฉด:

  • POST๋กœ ์ƒ์„ฑํ•˜๋ฉด 201์ด ์ •์„์ด๋‹ค. ์ƒˆ ์‚ฌ์šฉ์ž๋ฅผ ๋งŒ๋“ค์—ˆ์œผ๋ฉด 200๋ณด๋‹ค 201์ด ์˜๋ฏธ๊ฐ€ ๋ถ„๋ช…ํ•˜๋‹ค. ๋ณดํ†ต Location ํ—ค๋”์— ์ƒ์„ฑ๋œ ๋ฆฌ์†Œ์Šค์˜ URL์„ ํ•จ๊ป˜ ์ค€๋‹ค.
  • DELETE ์„ฑ๊ณต์€ 204๊ฐ€ ๊น”๋”ํ•˜๋‹ค. ์ง€์› ์œผ๋‹ˆ ๋Œ๋ ค์ค„ ๋ณธ๋ฌธ์ด ์—†๋‹ค. ๋ฌผ๋ก  ์‚ญ์ œ ๊ฒฐ๊ณผ ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ  ์‹ถ์œผ๋ฉด 200๋„ ๊ดœ์ฐฎ๋‹ค.
  • 202๋Š” ๋น„๋™๊ธฐ์šฉ์ด๋‹ค. "์—‘์…€ 10๋งŒ ๊ฑด ์ฒ˜๋ฆฌํ•ด์ค˜" ๊ฐ™์€ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ์ž‘์—…์„ ํ์— ๋„ฃ๊ณ  "์ ‘์ˆ˜ํ–ˆ์–ด"๋ผ๊ณ  ๋‹ตํ•  ๋•Œ ์“ด๋‹ค.
# ์‚ฌ์šฉ์ž ์ƒ์„ฑ ์„ฑ๊ณต
POST /users
→ HTTP/1.1 201 Created
   Location: /users/42

# ์‚ฌ์šฉ์ž ์‚ญ์ œ ์„ฑ๊ณต
DELETE /users/42
→ HTTP/1.1 204 No Content

4xx — ํด๋ผ์ด์–ธํŠธ ์˜ค๋ฅ˜

๊ฐ€์žฅ ์ž์ฃผ, ๊ทธ๋ฆฌ๊ณ  ๊ฐ€์žฅ ๋งŽ์ด ํ—ท๊ฐˆ๋ฆฌ๋Š” ์˜์—ญ์ด๋‹ค. ์š”์ฒญํ•œ ์ชฝ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ๋•Œ๋‹ค.

์ฝ”๋“œ ์ด๋ฆ„ ์–ธ์ œ ์“ฐ๋‚˜
400 Bad Request ์š”์ฒญ ํ˜•์‹·๊ฐ’์ด ์ž˜๋ชป๋จ (๊ฒ€์ฆ ์‹คํŒจ)
401 Unauthorized ์ธ์ฆ ์•ˆ ๋จ (๋กœ๊ทธ์ธ ํ•„์š”)
403 Forbidden ์ธ์ฆ์€ ๋์œผ๋‚˜ ๊ถŒํ•œ ์—†์Œ
404 Not Found ๋ฆฌ์†Œ์Šค๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Œ
405 Method Not Allowed ํ—ˆ์šฉ๋˜์ง€ ์•Š์€ HTTP ๋ฉ”์„œ๋“œ
409 Conflict ํ˜„์žฌ ์ƒํƒœ์™€ ์ถฉ๋Œ (์ค‘๋ณต ๋“ฑ)
422 Unprocessable Entity ํ˜•์‹์€ ๋งž์œผ๋‚˜ ์˜๋ฏธ์ƒ ์ฒ˜๋ฆฌ ๋ถˆ๊ฐ€
429 Too Many Requests ์š”์ฒญ ํšŸ์ˆ˜ ์ดˆ๊ณผ (์†๋„ ์ œํ•œ)

401 vs 403 — ๊ฐ€์žฅ ํ—ท๊ฐˆ๋ฆฌ๋Š” ํ•œ ์Œ

์ด ๋‘˜์˜ ์ฐจ์ด๊ฐ€ ๋ฉด์ ‘ ๋‹จ๊ณจ์ด์ž ์‹ค๋ฌด ํ˜ผ๋ž€์˜ ์ฃผ๋ฒ”์ด๋‹ค.

  • 401 Unauthorized: "๋„ˆ ๋ˆ„๊ตฌ์ธ์ง€ ๋ชจ๋ฅด๊ฒ ์–ด." ์ธ์ฆ ์ž์ฒด๊ฐ€ ์•ˆ ๋๋‹ค. ๋กœ๊ทธ์ธ์„ ์•ˆ ํ–ˆ๊ฑฐ๋‚˜ ํ† ํฐ์ด ์—†๊ฑฐ๋‚˜ ๋งŒ๋ฃŒ๋์„ ๋•Œ. ์‚ฌ์‹ค ์ด๋ฆ„์ด "Unauthorized(์ธ๊ฐ€)"์ธ๋ฐ ์˜๋ฏธ๋Š” "Unauthenticated(์ธ์ฆ)"๋ผ์„œ ๋” ํ—ท๊ฐˆ๋ฆฐ๋‹ค.
  • 403 Forbidden: "๋„ˆ๊ฐ€ ๋ˆ„๊ตฌ์ธ์ง€๋Š” ์•Œ์•„. ๊ทผ๋ฐ ์ด๊ฑด ๊ถŒํ•œ์ด ์—†์–ด." ๋กœ๊ทธ์ธ์€ ํ–ˆ์ง€๋งŒ ๊ทธ ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•  ์ž๊ฒฉ์ด ์—†์„ ๋•Œ. ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๊ฐ€ ๊ด€๋ฆฌ์ž API๋ฅผ ํ˜ธ์ถœํ•œ ๊ฒฝ์šฐ.
ํ† ํฐ ์—†์ด ์š”์ฒญ        → 401 (๋ˆ„๊ตฐ์ง€ ๋ชจ๋ฆ„)
์ผ๋ฐ˜ ์œ ์ €๊ฐ€ /admin   → 403 (๋ˆ„๊ตฐ์ง€ ์•Œ์ง€๋งŒ ๊ถŒํ•œ ์—†์Œ)

OWASP ์ ‘๊ทผ ์ œ์–ด ๊ด€์ ์—์„œ๋„ ์ด ๊ตฌ๋ถ„์€ ์ค‘์š”ํ•˜๋‹ค. ๋‹ค๋งŒ ๋ณด์•ˆ์ƒ "๋ฆฌ์†Œ์Šค ์กด์žฌ ์ž์ฒด๋ฅผ ์ˆจ๊ธฐ๊ณ  ์‹ถ์„ ๋•Œ"๋Š” 403 ๋Œ€์‹  404๋ฅผ ์ฃผ๊ธฐ๋„ ํ•œ๋‹ค.

400 vs 422 — ํ˜•์‹์ด๋ƒ ์˜๋ฏธ๋ƒ

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

409 Conflict์™€ 429

  • 409: "์ด๋ฏธ ์กด์žฌํ•˜๋Š” ์ด๋ฉ”์ผ์ž…๋‹ˆ๋‹ค" ๊ฐ™์€ ์ถฉ๋Œ ์ƒํ™ฉ. ๋™์‹œ ์ˆ˜์ •์œผ๋กœ ์ธํ•œ ๋ฒ„์ „ ์ถฉ๋Œ์—๋„ ์“ด๋‹ค.
  • 429: API ํ˜ธ์ถœ์ด ๋„ˆ๋ฌด ์žฆ์„ ๋•Œ. OWASP์˜ ๋ฌด์ œํ•œ ๋ฆฌ์†Œ์Šค ์†Œ๋น„ ๋ฐฉ์–ด์™€ ์ง๊ฒฐ๋œ๋‹ค. ๋ณดํ†ต Retry-After ํ—ค๋”๋กœ "์–ธ์ œ ๋‹ค์‹œ ์‹œ๋„ํ•˜๋ผ"๋ฅผ ์•Œ๋ ค์ค€๋‹ค.

5xx — ์„œ๋ฒ„ ์˜ค๋ฅ˜

์„œ๋ฒ„๊ฐ€ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋‹ค ์‹คํŒจํ–ˆ์„ ๋•Œ๋‹ค. ์ด๊ฑด ํด๋ผ์ด์–ธํŠธ ์ž˜๋ชป์ด ์•„๋‹ˆ๋‹ค.

์ฝ”๋“œ ์ด๋ฆ„ ์–ธ์ œ ์“ฐ๋‚˜
500 Internal Server Error ์„œ๋ฒ„ ๋‚ด๋ถ€์—์„œ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์€ ์˜ˆ์™ธ
502 Bad Gateway ๊ฒŒ์ดํŠธ์›จ์ด/ํ”„๋ก์‹œ๊ฐ€ ์ž˜๋ชป๋œ ์‘๋‹ต ๋ฐ›์Œ
503 Service Unavailable ์„œ๋ฒ„ ๊ณผ๋ถ€ํ•˜·์ ๊ฒ€์œผ๋กœ ์ผ์‹œ ๋ถˆ๊ฐ€
504 Gateway Timeout ๊ฒŒ์ดํŠธ์›จ์ด๊ฐ€ ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ๋‹ค ํƒ€์ž„์•„์›ƒ

์‹ค๋ฌด ํฌ์ธํŠธ:

  • 500์€ "์žก์ง€ ๋ชปํ•œ ์˜ˆ์™ธ"์˜ ์‹ ํ˜ธ๋‹ค. NullPointerException ๊ฐ™์€ ๊ฒŒ ๊ทธ๋Œ€๋กœ ํ„ฐ์ง€๋ฉด 500์ด ๋‚˜๊ฐ„๋‹ค. 500์ด ์ž์ฃผ ๋ณด์ธ๋‹ค๋ฉด ์ฝ”๋“œ์— ๋ฒ„๊ทธ๊ฐ€ ์žˆ๋‹ค๋Š” ๋œป์ด๋‹ค.
  • 502/504๋Š” ๋ณดํ†ต ์ธํ”„๋ผ ๋ฌธ์ œ๋‹ค. ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ ๋’ค์˜ ์„œ๋ฒ„๊ฐ€ ์ฃฝ์—ˆ๊ฑฐ๋‚˜(502), ์‘๋‹ต์ด ๋„ˆ๋ฌด ๋А๋ฆด ๋•Œ(504). API ์„œ๋ฒ„ ์ฝ”๋“œ๋ณด๋‹ค ๊ฒŒ์ดํŠธ์›จ์ด·๋„คํŠธ์›Œํฌ๋ฅผ ๋ด์•ผ ํ•œ๋‹ค.
  • 503์€ ์ ๊ฒ€·๊ณผ๋ถ€ํ•˜์šฉ์ด๋‹ค. ์˜๋„์ ์œผ๋กœ "์ง€๊ธˆ์€ ์„œ๋น„์Šค ๋ชป ํ•ด"๋ผ๊ณ  ์•Œ๋ฆด ๋•Œ ์“ด๋‹ค.

์ค‘์š”ํ•œ ๊ฑด, ํด๋ผ์ด์–ธํŠธ ์ž˜๋ชป์„ 500์œผ๋กœ ์ฃผ๋ฉด ์•ˆ ๋œ๋‹ค๋Š” ์ ์ด๋‹ค. ์ž˜๋ชป๋œ ์ž…๋ ฅ์€ 400๋ฒˆ๋Œ€๋กœ ์ค˜์•ผ ํ•œ๋‹ค. ๋‹ค 500์œผ๋กœ ์ฃผ๋ฉด, API๋ฅผ ์“ฐ๋Š” ์ชฝ์ด "๋‚ด ์ž˜๋ชป์ธ์ง€ ์„œ๋ฒ„ ์ž˜๋ชป์ธ์ง€" ๊ตฌ๋ถ„์„ ๋ชป ํ•œ๋‹ค.


์ž์ฃผ ํ•˜๋Š” ์‹ค์ˆ˜

์‹ค๋ฌด์—์„œ ํ”ํžˆ ๋ณด๋Š” ์•ˆํ‹ฐํŒจํ„ด๋“ค์ด๋‹ค.

1. ์ „๋ถ€ 200์œผ๋กœ ์ฃผ๊ธฐ
๊ฐ€์žฅ ํ”ํ•œ ์‹ค์ˆ˜. ์—๋Ÿฌ๊ฐ€ ๋‚˜๋„ 200์„ ์ฃผ๊ณ  ๋ณธ๋ฌธ์— {"success": false}๋ฅผ ๋‹ด๋Š” ์‹์ด๋‹ค. ์ด๋Ÿฌ๋ฉด HTTP ํ‘œ์ค€์˜ ์ด์ ์„ ํ†ต์งธ๋กœ ๋ฒ„๋ฆฌ๋Š” ๊ฒƒ์ด๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋งค๋ฒˆ ๋ณธ๋ฌธ์„ ๊นŒ๋ด์•ผ ์„ฑ๊ณต/์‹คํŒจ๋ฅผ ์•ˆ๋‹ค.

2. ํด๋ผ์ด์–ธํŠธ ์˜ค๋ฅ˜๋ฅผ 500์œผ๋กœ ์ฃผ๊ธฐ
๊ฒ€์ฆ ์‹คํŒจ(400์ด์–ด์•ผ ํ•  ๊ฒƒ)๋ฅผ ์ฒ˜๋ฆฌ ์•ˆ ํ•ด์„œ ์˜ˆ์™ธ๊ฐ€ ํ„ฐ์ง€๊ณ  500์ด ๋‚˜๊ฐ€๋Š” ๊ฒฝ์šฐ. ์ž…๋ ฅ ๊ฒ€์ฆ์„ ์ œ๋Œ€๋กœ ํ•˜๋ฉด 4xx๋กœ ์ •ํ™•ํžˆ ์‘๋‹ตํ•  ์ˆ˜ ์žˆ๋‹ค.

3. 401๊ณผ 403์„ ์„ž์–ด ์“ฐ๊ธฐ
์ธ์ฆ ์•ˆ ๋œ ๊ฑธ 403์œผ๋กœ, ๊ถŒํ•œ ์—†๋Š” ๊ฑธ 401๋กœ ์ฃผ๋Š” ํ˜ผ๋ž€. ์œ„์˜ ๊ตฌ๋ถ„์„ ๊ธฐ์–ตํ•˜์ž.

4. ์—๋Ÿฌ ์‘๋‹ต์— ์ •๋ณด๊ฐ€ ์—†์Œ
์ƒํƒœ ์ฝ”๋“œ๋งŒ ์ฃผ๊ณ  ๋๋‚ด์ง€ ๋ง๊ณ , ๋ณธ๋ฌธ์— "๋ฌด์—‡์ด ์™œ ์ž˜๋ชป๋๋Š”์ง€"๋ฅผ ๋‹ด์•„์ฃผ๋Š” ๊ฒŒ ์ข‹๋‹ค.

// ์ข‹์€ ์—๋Ÿฌ ์‘๋‹ต ์˜ˆ์‹œ
{
  "status": 400,
  "code": "INVALID_EMAIL",
  "message": "์ด๋ฉ”์ผ ํ˜•์‹์ด ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค",
  "field": "email"
}

๋งˆ์น˜๋ฉฐ

HTTP ์ƒํƒœ ์ฝ”๋“œ๋Š” ์™ธ์šฐ๋Š” ๊ฒŒ ๋ชฉ์ ์ด ์•„๋‹ˆ๋ผ, API๋ฅผ ์“ฐ๋Š” ์‚ฌ๋žŒ๊ณผ์˜ ์•ฝ์†์ด๋‹ค. ํ•ต์‹ฌ๋งŒ ๋‹ค์‹œ ์งš์œผ๋ฉด ์ด๋ ‡๋‹ค. ์•ž์ž๋ฆฌ๋กœ ์„ฑ๊ฒฉ์„ ๊ฐ€๋ฅด๊ณ (2xx ์„ฑ๊ณต, 4xx ํด๋ผ์ด์–ธํŠธ ์ž˜๋ชป, 5xx ์„œ๋ฒ„ ์ž˜๋ชป), ์ž์ฃผ ์“ฐ๋Š” ๊ฒƒ(200·201·204·400·401·403·404·409·429·500)๋งŒ ์ •ํ™•ํžˆ ์“ฐ๋ฉด ๋Œ€๋ถ€๋ถ„์˜ ์ƒํ™ฉ์„ ๊น”๋”ํ•˜๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

ํŠนํžˆ 401๊ณผ 403์˜ ๊ตฌ๋ถ„, ๊ทธ๋ฆฌ๊ณ  "ํด๋ผ์ด์–ธํŠธ ์˜ค๋ฅ˜๋Š” 4xx, ์„œ๋ฒ„ ์˜ค๋ฅ˜๋Š” 5xx"๋ผ๋Š” ์›์น™๋งŒ ์ง€์ผœ๋„ API์˜ ํ’ˆ์งˆ์ด ๋ˆˆ์— ๋„๊ฒŒ ์˜ฌ๋ผ๊ฐ„๋‹ค. ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ์ œ๋Œ€๋กœ ์“ฐ๋Š” API๋Š”, ๋ฌธ์„œ๋ฅผ ๋œ ๋ด๋„ ๋™์ž‘์„ ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๊ฒŒ ์ข‹์€ API์˜ ์กฐ๊ฑด์ด๋‹ค.


์ฐธ๊ณ  ์ถœ์ฒ˜