BackEnd

HTTP μƒνƒœμ½”λ“œ

mokhs 2021. 5. 22. 19:04

κΉ€μ˜ν•œλ‹˜μ˜ λͺ¨λ“  개발자λ₯Ό μœ„ν•œ HTTP μ›Ή κΈ°λ³Έ 지식 κ°•μ˜λ₯Ό μˆ˜κ°•ν•˜λ©° μ •λ¦¬ν•œ κΈ€μž…λ‹ˆλ‹€.

μƒνƒœ μ½”λ“œ

: ν΄λΌμ΄μ–ΈνŠΈκ°€ 보낸 μš”μ²­μ˜ 처리 μƒνƒœλ₯Ό μ‘λ‹΅μ—μ„œ μ•Œλ €μ£ΌλŠ” κΈ°λŠ₯

μƒνƒœμ½”λ“œλ₯Ό 많이 μ‚¬μš©ν•˜λŠ” 것은 상황에 따라 μ ν•©ν•˜μ§€ μ•Šμ„ 수 μžˆλ‹€.
μƒνƒœμ½”λ“œλŠ” ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„μ™€μ˜ 약속이고, 보톡 많이 μ‚¬μš©ν•˜λŠ” μƒνƒœμ½”λ“œλ₯Ό μ‚¬μš©ν•˜λ©°,
κ°œλ°œν•˜λŠ” νŒ€μ— λ”°λΌμ„œ μƒνƒœ μ½”λ“œλ₯Ό μ œν•œν•˜λŠ” λ“± 이 약속을 μ ν•©ν•˜κ²Œ μ‚¬μš©ν•˜λŠ” 것도 μ€‘μš”ν•˜λ‹€.

μ’…λ₯˜

  • 1xx (Informational): μš”μ²­μ΄ μˆ˜μ‹ λ˜μ–΄ μ²˜λ¦¬μ€‘ *거의 μ‚¬μš©λ˜μ§€ μ•ŠμŒ
  • 2xx (Successful) : μš”μ²­ 정상 처리
  • 3xx (Redirection) : μš”μ²­μ„ μ™„λ£Œν•˜λ €λ©΄ μΆ”κ°€ 행동이 ν•„μš”
  • 4xx (Client Error) : ν΄λΌμ΄μ–ΈνŠΈ 였λ₯˜, 잘λͺ»λœ 문법 λ“±μœΌλ‘œ μ„œλ²„κ°€ μš”μ²­μ„ μˆ˜ν–‰ν•  수 μ—†μŒ
  • 5xx (Server Error) : μ„œλ²„ 였λ₯˜, μ„œλ²„κ°€ 정상 μš”μ²­μ„ μ²˜λ¦¬ν•˜μ§€ λͺ»ν•¨

λ§Œμ•½ λͺ¨λ₯΄λŠ” μƒνƒœ μ½”λ“œκ°€ λ°˜ν™˜λœλ‹€λ©΄?

  • 정해지지 μ•Šμ€ μƒνƒœμ½”λ“œλ₯Ό μ„œλ²„κ°€ λ°˜ν™˜ν•œλ‹€λ©΄?
  • ν΄λΌμ΄μ–ΈνŠΈλŠ” μƒμœ„ μƒνƒœμ½”λ“œλ‘œ ν•΄μ„ν•΄μ„œ μ²˜λ¦¬ν•œλ‹€.
  • μœ„ νŠΉμ§•μœΌλ‘œ μƒˆλ‘œμš΄ μƒνƒœ μ½”λ“œκ°€ μΆ”κ°€λ˜κ±°λ‚˜ ν•˜λŠ” κ²½μš°μ— ν΄λΌμ΄μ–ΈνŠΈλ₯Ό μˆ˜μ •ν•˜μ§€ μ•Šμ•„λ„ λœλ‹€.

μ˜ˆμ‹œ)

  • 279??? → 2xx(Successful)
  • 471??? → 4xx(Client Error)
  • 598??? → 5xx(Server Error)

μ£Όμš” μƒνƒœμ½”λ“œλ“€

2xx (Successful)

ν΄λΌμ΄μ–ΈνŠΈ μš”μ²­μ„ μ„±κ³΅μ μœΌλ‘œ μ²˜λ¦¬ν•¨.

  • 200OK : μš”μ²­ 성곡
  • 201Created : μš”μ²­μ„ μ„±κ³΅ν•΄μ„œ μƒˆλ‘œμš΄ λ¦¬μ†ŒμŠ€κ°€ 생성됨
  • 202Accepted : μš”μ²­μ΄ μ ‘μˆ˜λ˜μ—ˆμœΌλ‚˜ μ²˜λ¦¬κ°€ μ™„λ£Œλ˜μ§€ μ•ŠμŒ.
  • 204No Content

200 OK


Request

GET /members HTTP/1.1
Content-Type: application/json

Response

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: ~

[
 {
    "username": "user1",
    "age": 30
 },
 {
    "username": "user2",
    "age": 20
 }
]

201 Created

μžμ› μƒμ„±μš©λ„, μƒμ„±λœ λ¦¬μ†ŒμŠ€λŠ” μ‘λ‹΅μ˜ Location헀더 ν•„λ“œλ‘œ 식별


Request

POST /members HTTP/1.1
Content-Type: application/json

{
    "username": "user3",
    "age": 40
}

Response

HTTP/1.1 201 Created
Content-Type: application/json
Content-Length: ~
Location: /members/2

{
    "username": "user3",
    "age": 40
}

202 Accepted

μš”μ²­μ΄ μ ‘μˆ˜λ˜μ—ˆμœΌλ‚˜ μ²˜λ¦¬κ°€ μ™„λ£Œλ˜μ§€ μ•ŠμŒ

  • μš”μ²­μ€ μ§€κΈˆ ν•˜κ³  1μ‹œκ°„ λ’€ μ‹€ν–‰ν•˜λ„λ‘ μž‘μ—…μ„ μ˜ˆμ•½ν•  λ•Œ
  • ex) 배치

204 No Content

μ„œλ²„κ°€ μš”μ²­μ„ μ„±κ³΅μ μœΌλ‘œ μˆ˜ν–‰ν–ˆμ§€λ§Œ, 응닡 νŽ˜μ΄λ‘œλ“œ 본문에 보낼 데이터가 μ—†μŒ

  • ex) μ›Ή λ¬Έμ„œ νŽΈμ§‘κΈ°μ˜ save λ²„νŠΌ
  • save λ²„νŠΌμ˜ κ²°κ³Όλ‘œλŠ” 아무 λ‚΄μš©μ΄ 없어도 됨.
  • save λ²„νŠΌμ„ λˆŒλŸ¬λ„ 같은 화면을 μœ μ§€ν•΄μ•Ό 함.
  • κ²°κ³Ό λ‚΄μš©μ΄ 없어도 204 (2xx)λ©”μ‹œμ§€λ§ŒμœΌλ‘œ 성곡을 인식할 수 있음.

3xx (Redirection)

μš”μ²­μ„ μ™„λ£Œν•˜κΈ° μœ„ν•΄ μœ μ € μ—μ΄μ „νŠΈ(ν΄λΌμ΄μ–ΈνŠΈ ν”„λ‘œκ·Έλž¨ = μ›Ή λΈŒλΌμš°μ €) 의 μΆ”κ°€ 쑰치 ν•„μš”

  • 300 Mulitiple Choices : 잘 μ•ˆ 씀
  • 301 Moved Permanently
  • 302 Found
  • 303 See Other
  • 304 Not Modified
  • 307 Temporary Redirect
  • 308 Permanent Redirect

λ¦¬λ‹€μ΄λ ‰μ…˜ 이해

  • 3xx 응닡 결과에 Locaiton 헀더가 μ‘΄μž¬ν•œλ‹€λ©΄, Location μœ„μΉ˜λ‘œ μžλ™ 이동(λ¦¬λ‹€μ΄λ ‰νŠΈ)
  • B둜 μ ‘μ†ν•˜μ§€ μ•Šκ³  AλΌλŠ” URL둜 μš”μ²­ν–ˆλŠ”λ° BλΌλŠ” URL둜 λ³€κ²½λ˜μ–΄ μš”μ²­ν•˜κ²Œ 됨
  • ex) /members/users

μ’…λ₯˜

  • 영ꡬ λ¦¬λ‹€μ΄λ ‰μ…˜
    • νŠΉμ • λ¦¬μ†ŒμŠ€μ˜ URIκ°€ 영ꡬ적으둜 이동
      • ex) /members → /users
      • ex) /event → /new-event
  • μž„μ‹œ λ¦¬λ‹€μ΄λ ‰μ…˜ - μΌμ‹œμ μΈ λ³€κ²½
    • μ£Όλ¬Έ μ™„λ£Œ ν›„ μ£Όλ¬Έ λ‚΄μ—­ ν™”λ©΄μœΌλ‘œ 이동
    • PRG(Post → Redirect → Get)νŒ¨ν„΄μ„ μ΄μš©ν•¨
  • 특수 λ¦¬λ‹€μ΄λ ‰μ…˜
    • κ²°κ³Ό λŒ€μ‹  μΊμ‹œλ₯Ό μ‚¬μš©

영ꡬ λ¦¬λ‹€μ΄λ ‰μ…˜

301, 308

  • λ¦¬μ†ŒμŠ€μ˜ URIκ°€ 영ꡬ적으둜 μ΄λ™λœ κ²½μš°μ— μ‚¬μš© ex) /members → /users
  • ν˜„μž¬ μ‚¬μš©ν•˜λ˜ κ²½λ‘œκ°€ μ™„μ „νžˆ 변경됨 을 μ•Œλ €μ£ΌκΈ° μœ„ν•¨.
  • μ›λž˜μ˜ URL μ‚¬μš© X 검색 엔진 λ“±μ—μ„œλ„ λ³€κ²½ 인지
  • 301 Moved Permanently : 영ꡬ적으둜 이동 됨
    • λ¦¬λ‹€μ΄λ ‰νŠΈ μ‹œ μš”μ²­ λ©”μ†Œλ“œκ°€ GET으둜 변함, 본문이 제거될 수 있음
  • 308 Permanent Redirect : 영ꡬ λ¦¬λ‹€μ΄λ ‰μ…˜
    • λ¦¬λ‹€μ΄λ ‰νŠΈ μ‹œ μš”μ²­ λ©”μ†Œλ“œ, λ³Έλ¬Έ μœ μ§€(처음 μš”μ²­μ΄ POSTλ©΄ λ¦¬λ‹€μ΄λ ‰νŠΈλ„ POST μœ μ§€)

301 308 λ¦¬λ‹€μ΄λ ‰νŠΈ κΈ°λŠ₯은 κ°™μœΌλ‚˜ μš”μ²­ λ©”μ†Œλ“œμ™€ 본문이 μœ μ§€λ¨μ— μžˆμ–΄μ„œ 차이가 있음.

URL이 λ°”λ€Œλ©΄ ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ μ„œλ²„λ‘œ 보낼 데이터 μŠ€νŽ™μ΄ 변경될 수 있음
μ™ λ§Œν•˜λ©΄ 301 GET으둜 λ³€ν™˜ν•˜λŠ” 게 μ’‹μŒ

μΌμ‹œμ μΈ λ¦¬λ‹€μ΄λ ‰μ…˜

302, 307, 303

  • λ¦¬μ†ŒμŠ€μ˜ URIκ°€ μΌμ‹œμ μœΌλ‘œ λ³€κ²½
  • μΌμ‹œμ  변경이기 λ•Œλ¬Έμ— 검색 엔진 λ“±μ—μ„œ URL을 λ³€κ²½ν•˜λ©΄ μ•ˆλ¨.
  • 302 Found
    • λ¦¬λ‹€μ΄λ ‰νŠΈμ‹œ μš”μ²­ λ©”μ†Œλ“œκ°€ GET으둜 λ³€ν•˜κ³  본문이 제거될 수 있음
  • 307 Temporary Redirect
    • 302와 κΈ°λŠ₯ 동일
    • μš”μ²­ λ©”μ†Œλ“œ, λ³Έλ¬Έ μœ μ§€
  • 303 See Other
    • 302와 κΈ°λŠ₯ 동일
    • λ¦¬λ‹€μ΄λ ‰νŠΈμ‹œ μš”μ²­ λ©”μ†Œλ“œκ°€ GET으둜 변경됨

μ‹€λ¬΄μ—μ„œ 많이 씀

각각 λ¦¬λ‹€μ΄λ ‰μ…˜ν•˜λŠ” κΈ°λŠ₯이 κ°™μœΌλ‚˜ μ‘°κΈˆμ”© 차이가 있음
302λŠ” λ©”μ†Œλ“œλ₯Ό GET으둜 λ³€ν™˜, 본문이 제거될 μˆ˜λ„ 있고 아닐 μˆ˜λ„(MAY) λŒ€λΆ€λΆ„ λ³€κ²½λ˜κΈ΄ 함.
303은 μš”μ²­ λ©”μ†Œλ“œκ°€ GET으둜 변경됨 (ex POST μš”μ²­ → λ¦¬λ‹€μ΄λ ‰νŠΈ GET μš”μ²­)
307은 μš”μ²­ λ©”μ†Œλ“œ, λ³Έλ¬Έ μœ μ§€
303은 λͺ…ν™•ν•˜κ²Œ GET으둜 λ³€κ²½λ˜λŠ” κ²ƒμ΄μ§€λ§Œ, 302λ₯Ό μ‚¬μš©ν•΄λ„ 크게 λ¬Έμ œκ°€ μ—†λ‹€κ³  함

PRG( Post, Redirect, Get ) νŒ¨ν„΄

μ•„λž˜ 상황이 생길 수 μžˆλ‹€.

  • POST둜 μ£Όλ¬Έ 후에 μ›Ή λΈŒλΌμš°μ €λ₯Ό μƒˆλ‘œκ³ μΉ¨ν•˜λ©΄?
  • μƒˆλ‘œκ³ μΉ¨μœΌλ‘œ λ‹€μ‹œ μš”μ²­μ€‘λ³΅ μ£Όλ¬Έ μš”μ²­μ΄ λ°œμƒ ν•œλ‹€
  • λ¬Όλ‘  μ„œλ²„μ—μ„œ 이λ₯Ό λ§‰μ•„μ•Όν•˜κΈ΄ ν•˜μ§€λ§Œ, ν΄λΌμ΄μ–ΈνŠΈ μΈ‘μ—μ„œλ„ 방지해주기 μœ„ν•΄μ„œ
  • μš”μ²­ λ©”μ†Œλ“œλ₯Ό GET으둜 λ³€κ²½ν•΄μ„œ 이λ₯Ό λ°©μ§€ν•΄μ£ΌλŠ” 것이 PRG νŒ¨ν„΄μ΄λ‹€.
  • μ΄λ ‡κ²Œ ν•˜λ©΄ μš”μ²­ λ©”μ†Œλ“œκ°€ GET으둜 λ³€κ²½λ˜μ—ˆκΈ° λ•Œλ¬Έμ— μƒˆλ‘œκ³ μΉ¨μ„ 해도 GET으둜 κ²°κ³Ό ν™”λ©΄λ§Œ μ‘°νšŒν•˜κ²Œ λœλ‹€.

λ”°λΌμ„œ 쀑볡 μš”μ²­μ„ 막기 μœ„ν•΄ POSTRedirectμš”μ²­ λ©”μ†Œλ“œλ₯Ό GET으둜 λ³€κ²½ν•˜λŠ” PRG νŒ¨ν„΄μ„ κ°€μ§€λŠ” 것이 μ•ˆμ •μ μ΄λ‹€.

λ˜ν•œ PRG νŒ¨ν„΄μ„ μ‚¬μš©ν•˜λ©΄ μ„œλ²„ μΈ‘μ—μ„œ 쀑볡 μ£Όλ¬Έ μ—λŸ¬μ— λŒ€ν•œ λ‘œκ·Έλ„ μ€„μ–΄λ“€κ²Œ λœλ‹€.

κ·Έλž˜μ„œ 302, 307, 303 쀑 뭘 μ‚¬μš©ν•΄μ•Ό ν•˜λ‚˜?

  • 정리
    • 302 FoundGET으둜 λ³€ν•  수 있음
    • 307 Temporary Redirect → λ©”μ†Œλ“œκ°€ λ³€κ²½λ˜μ§€ μ•ŠμŒ
    • 303 See OtherGET으둜 변함
  • 역사
    • 처음 302 μŠ€νŽ™μ˜ μ˜λ„λŠ” HTTP λ©”μ†Œλ“œ μœ μ§€λ₯Ό μœ„ν•œ κ²ƒμ΄μ—ˆλ‹€κ³  함.
    • 그런데 μ›Ή λΈŒλΌμš°μ €λ“€ λŒ€λΆ€λΆ„μ΄ GET으둜 바꿔버렸고(μΌλΆ€λŠ” λ‹€λ₯΄κ²Œ λ™μž‘)
    • μŠ€νŽ™μ— λŒ€ν•œ λͺ¨ν˜Έν•¨μ΄ 생김
    • κ·Έλž˜μ„œ λͺ¨ν˜Έν•œ 302λ₯Ό λŒ€μ‹ ν•˜λŠ” λͺ…ν™•ν•œ 307, 303이 λ“±μž₯ν•˜κ²Œ 됨 (+ 301 λŒ€μ‘μœΌλ‘œ 308 λ“±μž₯)
  • ν˜„μ‹€
    • 307, 303을 ꢌμž₯ν•˜μ§€λ§Œ ν˜„μ‹€μ μœΌλ‘œ 이미 λ§Žμ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λΌμ΄λΈŒλŸ¬λ¦¬λ“€μ΄ 302λ₯Ό κΈ°λ³Έκ°’μœΌλ‘œ μ‚¬μš©
    • μžλ™ λ¦¬λ‹€μ΄λ ‰μ…˜μ‹œμ— GET으둜 변해도 되면 302λ₯Ό μ‚¬μš©ν•΄λ„ 큰 λ¬Έμ œκ°€ μ—†μŒ

기타 λ¦¬λ‹€μ΄λ ‰μ…˜

300, 304

  • 300 Multiple Choices : μ•ˆ 씀
  • 304 NOT MODIFIED : μ§„μ§œ 많이 μ“΄λ‹€κ³  함
    • μΊμ‹œλ₯Ό λͺ©μ μœΌλ‘œ μ‚¬μš©
    • μ„œλ²„κ°€ ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ λ¦¬μ†ŒμŠ€κ°€ μˆ˜μ •λ˜μ§€ μ•Šμ•˜μŒμ„ μ•Œλ €μ£ΌκΈ° μœ„ν•¨ (μΊμ‹œλ‘œ λ¦¬λ‹€μ΄λ ‰νŠΈ 함)
    • ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„œλ²„μ—κ²Œ "λ‚΄κ°€ 이 이미지λ₯Ό 가지고 μžˆλŠ”λ° 이걸 써도 돼?" 라고 물어보고
    • μ„œλ²„μ—μ„œλŠ” "λ¦¬μ†ŒμŠ€κ°€ μˆ˜μ •λ˜μ§€ μ•Šμ•˜μœΌλ‹ˆ μ‚¬μš©ν•΄λ„ 돼" λΌλŠ” 응닡을 ν•˜λŠ” 것
    • 둜컬 μΊμ‹œλ₯Ό μ‚¬μš©ν•΄μ•Ό ν•˜λ―€λ‘œ response에 bodyλ₯Ό ν¬ν•¨ν•˜λ©΄ μ•ˆλ¨.
    • 쑰건뢀 GET, HEAD μš”μ²­ μ‹œ μ‚¬μš©

4xx (Client Error)

  • 였λ₯˜μ˜ 원인이 ν΄λΌμ΄μ–ΈνŠΈμ— 있음
  • μš”μ²­μ— 잘λͺ»λœ 문법 λ“±μœΌλ‘œ μ„œλ²„κ°€ μš”μ²­μ„ μˆ˜ν–‰ν•  수 μ—†μŒ
  • 4xx 였λ₯˜λŠ” ν΄λΌμ΄μ–ΈνŠΈ μš”μ²­μ— λŒ€ν•΄μ„œ 였λ₯˜κ°€ μžˆκΈ°λ•Œλ¬Έμ— 같은 데이터λ₯Ό 보내도 였λ₯˜κ°€ λ°œμƒν•΄μ•Όν•¨.
  • μ€‘μš” : 5xx 였λ₯˜κ°€ 터지닀가 μ„œλ²„κ°€ 볡ꡬ되면 같은 μš”μ²­μ„ λ³΄λƒˆμ„ λ•Œ 였λ₯˜κ°€ λ°œμƒν•˜μ§€ μ•Šκ²Œλ˜λŠ”λ°, 이런 κ²½μš°μ—λŠ” 4xxλ₯Ό 쓰지 μ•ŠλŠ” 것이 적합함
  • 즉, 이미 잘λͺ»λœ μš”μ²­μ€ 같은 μž¬μ‹œλ„λ„ μ‹€νŒ¨ν•΄μ•Ό 함.

4xx error μ—μ„œλŠ” μ‹€νŒ¨ν•œ μš”μ²­μ„ λ˜‘κ°™μ΄ μž¬μš”μ²­ ν–ˆμ„ λ•Œ 같은 응닡(μ‹€νŒ¨)이어야 함을 주의

  • 400 Bad Request
    • ν΄λΌμ΄μ–ΈνŠΈκ°€ 잘λͺ»λœ μš”μ²­μ„ ν•΄μ„œ μ„œλ²„κ°€ μš”μ²­μ„ μ²˜λ¦¬ν•  수 μ—†μŒ.
    • μš”μ²­ ꡬ문, λ©”μ‹œμ§€ λ“±μ˜ 였λ₯˜(μš”μ²­ νŒŒλΌλ―Έν„°, API μŠ€νŽ™ λ“±)
    • ν΄λΌμ΄μ–ΈνŠΈλŠ” μš”μ²­ λ‚΄μš©μ„ λ‹€μ‹œ κ²€ν† ν•˜κ³  보내야함.
  • 401 Unauthorized
    • 인증(Authentication) λ˜μ§€ μ•ŠμŒ
    • 401 였λ₯˜ λ°œμƒ μ‹œ 응닡에 WWW-Authenticate 헀더와 ν•¨κ»˜ 인증 방법을 μ„€λͺ…
    • 인증 : 본인이 λˆ„κ΅¬μΈμ§€ 확인 (둜그인)
    • 인가 : κΆŒν•œ λΆ€μ—¬ (ADMIN κΆŒν•œμ²˜λŸΌ νŠΉμ • λ¦¬μ†ŒμŠ€μ— μ ‘κ·Όν•  수 μžˆλŠ” κΆŒν•œ, 인증이 μžˆμ–΄μ•Ό 인가가 있음)
    • 였λ₯˜ λ©”μ‹œμ§€κ°€ Unauthorized(인가 μ•ˆλ¨)μ΄μ§€λ§Œ μΈμ¦λ˜μ§€ μ•ŠμŒμ„ 의미 (이름이 μ•„μ‰¬μš΄ 편)
  • 403 Forbidden
    • μ„œλ²„κ°€ μš”μ²­μ„ μ΄ν•΄ν–ˆμ§€λ§Œ, κΆŒν•œμ΄ μ—†μ–΄ μŠΉμΈμ„ κ±°λΆ€
    • 주둜 인증 자격 증λͺ…은 μžˆμ§€λ§Œ, μ ‘κ·Ό κΆŒν•œμ΄ λΆˆμΆ©λΆ„ν•œ 경우
    • ex) admin이 μ•„λ‹Œ 일반 userκ°€ admin λ“±κΈ‰μ˜ λ¦¬μ†ŒμŠ€μ— μ ‘κ·Όν•˜λŠ” 경우
  • 404 Not Found
    • μ„œλ²„κ°€ λ¦¬μ†ŒμŠ€λ₯Ό 찾을 수 μ—†μŒ
    • μ„œλ²„ μž…μž₯μ—μ„œλŠ” ν•΄λ‹Ή λ¦¬μ†ŒμŠ€κ°€ μ—†λŠ”λ° ν΄λΌμ΄μ–ΈνŠΈκ°€ μš”μ²­ν•œ 상황
    • λ”°λΌμ„œ ν΄λΌμ΄μ–ΈνŠΈκ°€ 잘λͺ»λœ μš”μ²­μ„ 함을 의미
    • λ˜λŠ” ν΄λΌμ΄μ–ΈνŠΈκ°€ κΆŒν•œμ΄ λΆ€μ‘±ν•œ λ¦¬μ†ŒμŠ€μ— μ ‘κ·Όν•  λ•Œ ν•΄λ‹Ή λ¦¬μ†ŒμŠ€λ₯Ό 숨기고 싢을 λ•Œ μ‚¬μš©

5xx (Server Error)

  • μ„œλ²„ 문제둜 였λ₯˜ λ°œμƒ
  • NullPointExecption, DB κ΄€λ ¨ λ“±λ“±..
  • μ„œλ²„ 문제이기 λ•Œλ¬Έμ— μ„œλ²„κ°€ λ³΅κ·€λ˜λ©΄ 재 μš”μ²­ μ‹œ 성곡
  • 500 Internal Server Error
    • μ„œλ²„ λ‚΄λΆ€ 문제둜 였λ₯˜ λ°œμƒ, μ• λ§€ν•˜λ©΄ 500 였λ₯˜ λ°œμƒ μ‹œν‚΄
  • 503 Service Unavailable
    • μ„œλΉ„μŠ€ 이용 λΆˆκ°€
    • μ„œλ²„κ°€ μΌμ‹œμ μΈ κ³ΌλΆ€ν•˜ λ˜λŠ” μ˜ˆμ •λœ μž‘μ—…μœΌλ‘œ μž μ‹œ μš”μ²­μ„ μ²˜λ¦¬ν•  수 μ—†μŒμ„ 의미
    • Retry-After 헀더 ν•„λ“œλ‘œ μ–Όλ§ˆλ’€μ— λ³΅κ΅¬λ˜λŠ” 지 보낼 수 있음
    • κ·ΈλŸ¬λ‚˜ λŒ€λΆ€λΆ„ 예츑 λΆˆκ°€λŠ₯ν•˜κΈ°μ— λ°”λ‘œ 500 errorκ°€ λ‚˜μ˜€λŠ” κ²½μš°κ°€ 많음.

5xx errorλŠ” μ§„μ§œ μ„œλ²„μ— λ¬Έμ œκ°€ μžˆμ„ λ•Œλ§Œ λ°œμƒμ‹œν‚€μž

ex ) 20μ„Έ μ΄μƒμ—κ²Œ μ μš©ν•˜λŠ” μ„œλΉ„μŠ€μΈλ° 15μ„Έκ°€ μ ‘μ†ν–ˆλ‹€? 이 κ²½μš°μ—λŠ” 400으둜 ν•΄κ²°ν•˜λŠ” λ°©ν–₯으둜 κ³ λ―Ό

마무리

  • 1xx Informational
    • μš”μ²­μ΄ μˆ˜μ‹ λ˜μ–΄ 처리 쀑
    • 거의 μ•ˆ 씀
  • 2xx Success
    • μš”μ²­ 성곡
  • 3xx Redirection
    • μš”μ²­μ„ μ™„λ£Œν•˜κΈ° μœ„ν•΄ μΆ”κ°€ 쑰치(λ¦¬λ‹€μ΄λ ‰μ…˜) κ°€ ν•„μš”ν•¨
  • 4xx Client Error
    • ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­ 였λ₯˜(μš”μ²­ νŒŒλΌλ―Έν„°, API μŠ€νŽ™ λ“±)
    • μ‹€νŒ¨ν•˜λŠ” μš”μ²­μ€ 같은 μš”μ²­μ„ μž¬μ‹œλ„ 해도 μ‹€νŒ¨ν•΄μ•Όν•¨
  • 5xx Server Error
    • μ„œλ²„ λ‚΄λΆ€ 였λ₯˜
    • μ„œλ²„ λ‚΄λΆ€ 였λ₯˜κ°€ 고쳐진닀면 재 μš”μ²­ μ‹œ 성곡
λ°˜μ‘ν˜•