Web/HTTP

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

 

πŸ“’ μƒνƒœ μ½”λ“œ

: ν΄λΌμ΄μ–ΈνŠΈκ°€ λ³΄λ‚Έ μš”μ²­μ˜ μ²˜λ¦¬ μƒνƒœλ₯Ό μ‘λ‹΅μ—μ„œ μ•Œλ €μ£ΌλŠ” κΈ°λŠ₯

πŸ“ 1xx (Informational): μš”μ²­μ΄ μˆ˜μ‹ λ˜μ–΄ μ²˜λ¦¬μ€‘

πŸ“ 2xx (Successful): μš”μ²­ μ •상 μ²˜λ¦¬ 

πŸ“ 3xx (Redirection): μš”청을 μ™„λ£Œν•˜λ €λ©΄ μΆ”κ°€ ν–‰λ™μ΄ ν•„μš” 

πŸ“ 4xx (Client Error): ν΄λΌμ΄μ–ΈνŠΈ μ˜€λ₯˜, μž˜λͺ»λœ λ¬Έλ²•λ“±μœΌλ‘œ μ„œλ²„κ°€ μš”청을 μˆ˜ν–‰ν•  μˆ˜ μ—†μŒ

πŸ“ 5xx (Server Error): μ„œλ²„ μ˜€λ₯˜, μ„œλ²„κ°€ μ •상 μš”청을 μ²˜λ¦¬ν•˜μ§€ λͺ»ν•¨

* ν΄λΌμ΄μ–ΈνŠΈκ°€ 인식할 수 μ—†λŠ” μƒνƒœ μ½”λ“œλ₯Ό μ„œλ²„κ°€ λ°˜ν™˜ν•˜λ©΄? 첫번째 자리 숫자둜 ν•΄μ„ν•΄μ„œ 처리. (200λŒ€μΈμ§€ 400λŒ€μΈμ§€ λ“±)

 

 

πŸ“’ 2xx (Successful):  ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­μ„ μ„±κ³΅μ μœΌλ‘œ 처리

πŸ“ 200 OK: μš”μ²­ 성곡

πŸ“ 201 Created: μš”μ²­ μ„±κ³΅ν•΄μ„œ μƒˆλ‘œμš΄ λ¦¬μ†ŒμŠ€κ°€ 생성됨.

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

* 예) 배치 처리의 경우. μš”μ²­ μ ‘μˆ˜ ν›„ 1μ‹œκ°„ λ’€ 배치 ν”„λ‘œμ„ΈμŠ€κ°€ μš”μ²­μ„ μ²˜λ¦¬ν•¨.

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

* 예) μ›Ή λ¬Έμ„œ νŽΈμ§‘κΈ°μ˜ saveλ²„νŠΌ λˆ„λ₯Έλ‹€κ³  κ²°κ³Ό λ‚΄μš©μ΄ μƒκΈ°λŠ” 것은 μ•„λ‹˜. κ·Έλƒ₯ 같은 ν™”λ©΄ μœ μ§€ν•˜λ©΄ 됨. 204 λ©”μ„Έμ§€λ§ŒμœΌλ‘œ 성곡을 μΈμ‹ν•˜κΈ°λ§Œ ν•˜λ©΄ 됨.

 

 

πŸ“’ 3xx (Redirection): μš”μ²­μ„ μ™„λ£Œν•˜κΈ° μœ„ν•΄ μœ μ € μ—μ΄μ „νŠΈμ˜ μΆ”κ°€ 쑰치 ν•„μš”

πŸ“Œ λ¦¬λ‹€μ΄λ ‰μ…˜:  μ›Ή λΈŒλΌμš°μ €λŠ” 3xx μ‘λ‹΅μ˜ 결과에 Location 헀더가 있으면, Location μœ„μΉ˜λ‘œ μžλ™ 이동. ν΄λΌμ΄μ–ΈνŠΈκ°€ URL을 λ°”κΏˆ.

 

πŸ“Œ 영ꡬ λ¦¬λ‹€μ΄λ ‰μ…˜ - νŠΉμ • λ¦¬μ†ŒμŠ€μ˜ URIκ°€ 영ꡬ적으둜 이동 (301, 308)

λ‘˜ λ‹€ κΈ°λŠ₯은 같은데,

 

πŸ“ 301 Moved Permanently

* λ¦¬λ‹€μ΄λ ‰νŠΈμ‹œ μš”μ²­ λ©”μ„œλ“œκ°€ GET으둜 λ³€ν•˜κ³ , 본문이 제거될 수 있음. -> κ²°κ³Όμ μœΌλ‘œλŠ” μƒˆλ‘œμš΄ νŽ˜μ΄μ§€κ°€ 보여짐.

πŸ“ 308 Permanent Redirect

* λ¦¬λ‹€μ΄λ ‰νŠΈμ‹œ μš”μ²­ λ©”μ„œλ“œμ™€ λ³Έλ¬Έ μœ μ§€(처음 POSTλ₯Ό 보내면 λ¦¬λ‹€μ΄λ ‰νŠΈλ„ POST μœ μ§€)

 

* μ‹€λ¬΄μ—μ„œλŠ” 잘 쓰이지 μ•ŠλŠ” μƒνƒœμ½”λ“œ(라고 ν•œλ‹€)

 

πŸ“Œ μΌμ‹œ λ¦¬λ‹€μ΄λ ‰μ…˜ - μΌμ‹œμ μœΌλ‘œ URI λ³€κ²½ (302, 307, 303)

* λ”°λΌμ„œ 검색 μ—”μ§„ λ“±μ—μ„œ URL을 λ³€κ²½ν•˜λ©΄ μ•ˆλ¨.

 

λ§ˆμ°¬κ°€μ§€λ‘œ μ„Έ κ°€μ§€ λͺ¨λ‘ κΈ°λŠ₯은 λ‹€ 같은데,

πŸ“ 302 Found

* λ¦¬λ‹€μ΄λ ‰νŠΈμ‹œ μš”μ²­ λ©”μ„œλ“œκ°€ GET으둜 λ³€ν•˜κ³ , 본문이 제거될 수 있음. (λŒ€λΆ€λΆ„ GET으둜 변함.)

* 사싀 처음 302 μŠ€νŽ™μ˜ μ˜λ„λŠ” HTTP λ©”μ„œλ“œλ₯Ό μœ μ§€ν•˜λŠ” κ²ƒμ΄μ—ˆμ§€λ§Œ λŒ€λΆ€λΆ„μ˜ μ›Ή λΈŒλΌμš°μ €λ“€μ΄ λ‹€ GET으둜 바꿔버리넀..?

* κ·Έλž˜μ„œ 이걸 λŒ€μ‹ ν•˜κΈ° μœ„ν•΄ λͺ…ν™•ν•œ 307, 303이 λ“±μž₯

πŸ“ 307 Temporary Redirect

* λ¦¬λ‹€μ΄λ ‰νŠΈμ‹œ μš”μ²­ λ©”μ„œλ“œμ™€ λ³Έλ¬Έ μœ μ§€ (μš”μ²­ λ©”μ„œλ“œλ₯Ό λ³€κ²½ν•˜λ©΄ μ•ˆλ¨.)

πŸ“ 303 See Other

* λ¦¬λ‹€μ΄λ ‰νŠΈμ‹œ μš”μ²­ λ©”μ„œλ“œκ°€ GET으둜 λ³€κ²½

 

πŸ“ PRG: Post/Redirect/Get

* λ§ˆμ§€λ§‰ μš”μ²­μ΄ POST인 μƒνƒœμ—μ„œ μƒˆλ‘œκ³ μΉ¨ν•˜λ©΄? λ§ˆμ§€λ§‰ μš”μ²­μ΄ POSTμ΄λ―€λ‘œ λ‹€μ‹œ μš”μ²­λΌμ„œ 쀑볡됨.

-> POST μš”μ²­ 후에 결과둜 λ‚˜μ˜€λŠ” 화면을 GET λ©”μ„œλ“œλ‘œ λ¦¬λ‹€μ΄λ ‰νŠΈ!

-> URL이 이미 POSTμ—μ„œ GET으둜 λ¦¬λ‹€μ΄λ ‰νŠΈ λ˜μ—ˆμœΌλ―€λ‘œ μƒˆλ‘œκ³ μΉ¨ν•΄λ„ GET으둜 κ²°κ³Ό ν™”λ©΄λ§Œ 쑰회~!

 

πŸ“Œ 특수 λ¦¬λ‹€μ΄λ ‰μ…˜ - κ²°κ³Ό λŒ€μ‹  μΊμ‹œ μ‚¬μš©

πŸ“ 300 Multiple Choices

* μ•ˆμ”λ‹ˆλ‹€. 

πŸ“ 304 Not Modified

* μΊμ‹œλ₯Ό λͺ©μ μœΌλ‘œ μ‚¬μš©.

* ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ λ¦¬μ†ŒμŠ€κ°€ μˆ˜μ •λ˜μ§€ μ•Šμ•˜μŒμ„ μ•Œλ €μ€Œ. -> 둜컬pc에 μ €μž₯된 μΊμ‹œ μž¬μ‚¬μš©.

* ν΄λΌμ΄μ–ΈνŠΈ: 데이터 λ‹€μ‹œ λ³΄λ‚΄μ€˜! -> μ„œλ²„: μΊμ‹œ 써!

* 응닡에 λ©”μ„Έμ§€ λ°”λ””λ₯Ό ν¬ν•¨ν•˜λ©΄ μ•ˆλ¨. (둜컬 μΊμ‹œλ₯Ό μ‚¬μš©ν•΄μ•Ό ν•˜λ―€λ‘œ)

 

 

πŸ“’ 4xx (Client Error): ν΄λΌμ΄μ–ΈνŠΈ 였λ₯˜

• ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­μ— 잘λͺ»λœ λ¬Έλ²•λ“±μœΌλ‘œ μ„œλ²„κ°€ μš”μ²­μ„ μˆ˜ν–‰ν•  수 μ—†μŒ. 

• 였λ₯˜μ˜ 원인이 ν΄λΌμ΄μ–ΈνŠΈμ— 있음.
• μ€‘μš”! ν΄λΌμ΄μ–ΈνŠΈκ°€ 이미 잘λͺ»λœ μš”μ²­, 데이터λ₯Ό 보내고 있기 λ•Œλ¬Έμ—, λ˜‘κ°™μ΄ μž¬μ‹œλ„ν•΄μ„œ μš”μ²­ν•΄λ„ 계속 μ‹€νŒ¨ν•¨.

 

πŸ“ 400 Bad Request

* ν΄λΌμ΄μ–ΈνŠΈκ°€ 잘λͺ»λœ μš”μ²­μ„ ν•΄μ„œ μ„œλ²„κ°€ μš”μ²­μ„ μ²˜λ¦¬ν•  수 μ—†μŒ.

• μš”μ²­ ꡬ문, λ©”μ‹œμ§€ λ“±λ“± 였λ₯˜

• ν΄λΌμ΄μ–ΈνŠΈλŠ” μš”μ²­ λ‚΄μš©μ„ λ‹€μ‹œ κ²€ν† ν•˜κ³ , 보내야함.
• μ˜ˆ) μš”μ²­ νŒŒλΌλ―Έν„°κ°€ μž˜λͺ»λ˜κ±°λ‚˜, API μŠ€νŽ™μ΄ λ§žμ§€ μ•Šμ„ λ•Œ

 

πŸ“ 401 Unauthorized 

* ν΄λΌμ΄μ–ΈνŠΈκ°€ ν•΄λ‹Ή λ¦¬μ†ŒμŠ€μ— λŒ€ν•œ 인증이 ν•„μš”ν•¨

• 인증(Authentication) λ˜μ§€ μ•ŠμŒ.

• 401 μ˜€λ₯˜ λ°œμƒμ‹œ μ‘닡에 WWW-Authenticate ν—€λ”와 ν•¨κ»˜ μΈμ¦ λ°©λ²•을 μ„€λͺ…

 

πŸ“ 403 Forbidden 

* μ„œλ²„κ°€ μš”μ²­μ„ μ΄ν•΄ν–ˆμ§€λ§Œ μŠΉμΈμ„ 거뢀함.

 

πŸ“ 404 Not Found 

* μš”μ²­ λ¦¬μ†ŒμŠ€λ₯Ό μ„œλ²„μ—μ„œ 찾을 수 μ—†μŒ.

* λ˜λŠ” ν΄λΌμ΄μ–ΈνŠΈκ°€ κΆŒν•œμ΄ λΆ€μ‘±ν•œ λ¦¬μ†ŒμŠ€μ— μ ‘κ·Όν•  λ•Œ ν•΄λ‹Ή λ¦¬μ†ŒμŠ€λ₯Ό μˆ¨κΈ°κ³  μ‹Άμ„ λ•Œ

 

 

πŸ“’ 5xx (Server Error): μ„œλ²„ 였λ₯˜

* μ„œλ²„ 문제둜 였λ₯˜ λ°œμƒ 

* μ„œλ²„μ— λ¬Έμ œκ°€ 있기 λ•Œλ¬Έμ— μž¬μ‹œλ„ ν•˜λ©΄ 성곡할 μˆ˜λ„ 있음. (볡ꡬ가 λœλ‹€λ©΄ λ“±λ“±)

 

πŸ“ 500 Internal Server Error 

* μ„œλ²„ 문제둜 였λ₯˜ λ°œμƒ, μ• λ§€ν•˜λ©΄ 500 였λ₯˜

 

 

πŸ“ 503 Service Unavailable 

* μ„œλΉ„μŠ€ 이용 λΆˆκ°€

* 거의 λ³Ό 수 μ—†κ³  λ°”λ‘œ 500이 λ˜κ² μ§€

 

* μ„œλ²„ 였λ₯˜(5xx)λŠ” μ§„μ§œ 쑰심해야 함. 예λ₯Ό λ“€μ–΄ 고객이 잘λͺ»ν•œ 경우. μ„œλ²„ 였λ₯˜λ‘œ μ²˜λ¦¬ν•˜λ©΄ μ•ˆλ¨!

* μ„œλ²„ λ‘œμ§μ΄λ‚˜ 쿼리, DB에 λ¬Έμ œκ°€ μžˆμ„ λ•Œλ§Œ μ„œλ²„ 였λ₯˜!!

'Web > HTTP' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

μΊμ‹œ  (0) 2022.01.12
HTTP 헀더 - 일반 헀더  (0) 2022.01.11
HTTP API 섀계 μ˜ˆμ‹œ  (0) 2022.01.11
HTTP λ©”μ„œλ“œμ™€ ν™œμš©  (0) 2022.01.10
HTTP κΈ°λ³Έ κ°œλ…  (0) 2022.01.10