μλ
νμΈμ! μΉ κ°λ°μ κΈ°λ³Έ μ€μ κΈ°λ³ΈμΈ HTTP μν μ½λμ λν΄ μ½κ³ κΉμ΄ μκ² μμλ³΄κ² μ΅λλ€. μ΄ μ½λλ μΉ λΈλΌμ°μ (ν΄λΌμ΄μΈνΈ)μ μλ²κ° μλ‘ ν΅μ νλ©° μ£Όκ³ λ°λ μλ΅μ μνλ₯Ό λνλ΄λ 3μ리 μ«μμ
λλ€.
π HTTP μν μ½λλ μ μ€μν κΉμ?
HTTP μν μ½λλ μλ²κ° ν΄λΌμ΄μΈνΈμκ² βλΉμ μ΄ μμ²ν μμ
μ΄ μ±κ³΅νλμ§, μ€ν¨νλμ§, νΉμ μΆκ°μ μΈ μ‘°μΉκ° νμνμ§βλ₯Ό μλ €μ£Όλ μΌμ’
μ νμ§νμ
λλ€. μ΄ μ½λλ₯Ό μ νν μλ©΄, μλ¬ λ°μ μ μμΈμ λΉ λ₯΄κ² νμ
νκ³ ν΄κ²°ν μ μμ΅λλ€.
μν μ½λλ ν¬κ² 5κ°μ§ κ·Έλ£ΉμΌλ‘ λλλ©°, μ€λμ ν·κ°λ¦¬κΈ° μ¬μ΄ 1xx, 4xx, 5xx κ·Έλ£Ήμ μ§μ€νκ² μ΅λλ€.
1. π’ 1xx: μ 보 μ 곡 (Informational Response)
- μλ―Έ: ν΄λΌμ΄μΈνΈμ μμ²μ΄ μμ λμκ³ , μλ²κ° μμ²μ κ³μ μ²λ¦¬ μ€μμ λνλ
λλ€.
- νΉμ§: μ΅μ’
μ μΈ μλ΅μ΄ μλλ©°, μλ΅ ν€λμ λΉ λΌμΈλ§ ν¬ν¨νκ³ λ³Έλ¬Έ(Body)μ ν¬ν¨νμ§ μμ΅λλ€.
- λ₯νκ²: μ΄ μ½λλ ν΄λΌμ΄μΈνΈκ° λμ©λ λ°μ΄ν°λ₯Ό 보λ΄κ±°λ, μμ²μ μμνκΈ° μ μ νΉμ ν€λλ₯Ό νμΈν΄μΌ ν λ μ£Όλ‘ μ¬μ©λ©λλ€. μ°κ²°μ΄ λκΈ°μ§ μκ³ κ³μ μ§νλκ³ μλ€λ μ νΈμ
λλ€.
- μ£Όμ μ½λ:
- 100 Continue (κ³μ):
- ν΄λΌμ΄μΈνΈκ° μμ² ν€λλ₯Ό λ³΄λΈ ν, μλ²λ‘λΆν° βκ³μ 보λ΄λ μ’λ€βλ νμΈμ λ°μ κ²½μ°. 보ν΅
Expect: 100-continue ν€λλ₯Ό ν¬ν¨ν μμ²μ λν μλ΅μ
λλ€.
- 101 Switching Protocols (νλ‘ν μ½ μ ν):
- μλ²κ° ν΄λΌμ΄μΈνΈμ μμ²μ λ°λΌ νλ‘ν μ½μ λ³κ²½ν κ²μμ μλ €μ€λλ€ (μ: HTTPμμ WebSocketμΌλ‘ μ νν λ).
2. β 4xx: ν΄λΌμ΄μΈνΈ μ€λ₯ (Client Error)
- μλ―Έ: μμ² μ체μ λ¬Έμ κ° μμ΄ μλ²κ° μμ²μ μ²λ¦¬ν μ μμμ λνλ
λλ€. μ¦, **ν΄λΌμ΄μΈνΈ(λΈλΌμ°μ , μ¬μ©μ)**μ μλͺ»μ
λλ€.
- νΉμ§: μλ²λ μμ²μ λ°μμ§λ§, μμ²μ νμ, λ¬Έλ², κΆν λ±μ λ¬Έμ κ° μμ΄ μ²λ¦¬λ₯Ό κ±°λΆν©λλ€.
- λ₯νκ²: μ΄ κ·Έλ£Ήμ μ½λκ° λ°μνλ©΄, κ°λ°μλ μ£Όλ‘ μμ² URL, μμ² λ³Έλ¬Έ(Payload), μΈμ¦/κΆν ν€λ λ±μ μ κ²ν΄μΌ ν©λλ€.
- μ£Όμ μ½λ:
- 400 Bad Request (μλͺ»λ μμ²):
- μμ²μ λ¬Έλ²μ΄ μλͺ»λμκ±°λ, μ ν¨νμ§ μμ λ°μ΄ν°κ° ν¬ν¨λμμ λ λ°μν©λλ€. (μ: νμ νλΌλ―Έν°κ° λλ½λμκ±°λ, λ°μ΄ν° νμμ΄ μλͺ»λ κ²½μ°)
- 401 Unauthorized (μΈμ¦λμ§ μμ):
- μμ²μ μ ν¨ν μΈμ¦ μ격 μ¦λͺ
(λ‘κ·ΈμΈ μ 보 λ±)μ΄ λΆμ‘±νκ±°λ μλ κ²½μ°.
- π¨ μ£Όμ: βμΈμ¦(Authentication)β μ€ν¨λ₯Ό μλ―Ένλ©°, βμΈκ°(Authorization)β μ€ν¨λ λ³΄ν΅ 403μ μ¬μ©ν©λλ€.
- 403 Forbidden (κΈμ§λ¨):
- ν΄λΌμ΄μΈνΈκ° μΈμ¦μ λμμ§λ§, ν΄λΉ 리μμ€μ μ κ·Όν **κΆν(μΈκ°)**μ΄ μλ κ²½μ°. (μ: μΌλ° μ¬μ©μκ° κ΄λ¦¬μ νμ΄μ§μ μ κ·Ό μλ)
- 404 Not Found (μ°Ύμ μ μμ):
- κ°μ₯ νν μλ¬! ν΄λΌμ΄μΈνΈκ° μμ²ν **리μμ€(URL)**λ₯Ό μλ²μμ μ°Ύμ μ μλ κ²½μ°. (νμ΄μ§ μ΄λ, νμΌ μμ λ±μΌλ‘ μΈν΄ URLμ΄ μ ν¨νμ§ μμ λ)
- 405 Method Not Allowed (νμ©λμ§ μμ λ©μλ):
- μμ²λ 리μμ€μ λν΄ μ¬μ©λ HTTP λ©μλ (GET, POST, PUT, DELETE λ±)κ° νμ©λμ§ μμ κ²½μ°. (μ: μ½κΈ° μ μ© κ²μνμ POST μμ²μ μλνμ λ)
- 429 Too Many Requests (λ무 λ§μ μμ²):
- ν΄λΌμ΄μΈνΈκ° μ§μ λ μκ° λ΄μ λ무 λ§μ μμ²μ 보λμ λ. **Rate Limiting (μμ² μλ μ ν)**μ μ΄κ³Όνμ λ μ£Όλ‘ μ¬μ©λ©λλ€.
3. π£ 5xx: μλ² μ€λ₯ (Server Error)
- μλ―Έ: ν΄λΌμ΄μΈνΈμ μμ²μ μ ν¨νμ§λ§, μλ²κ° μμ²μ μ²λ¦¬νλ κ³Όμ μμ λ΄λΆμ μΈ λ¬Έμ κ° λ°μνμμ λνλ
λλ€.
- νΉμ§: μ΄ μ½λκ° λ°μνλ©΄, ν΄λΌμ΄μΈνΈμ μλͺ»μ΄ μλλ―λ‘ μλ² κ°λ°μκ° μ½λλ₯Ό μ κ²νκ³ μμ ν΄μΌ ν©λλ€.
- λ₯νκ²: 5xx μ½λλ λ°μ΄ν°λ² μ΄μ€ μ μ μ€ν¨, μλ² λ©λͺ¨λ¦¬ λΆμ‘±, λΉμ¦λμ€ λ‘μ§ μ²λ¦¬ μ€ μμΈ λ°μ λ± μλ² λ΄λΆμ λ°νμ μλ¬λ₯Ό μλ―Έν©λλ€.
- μ£Όμ μ½λ:
- 500 Internal Server Error (λ΄λΆ μλ² μ€λ₯):
- μλ²μμ μμμΉ λͺ»ν μν©μ΄ λ°μνμ¬ μμ²μ μ²λ¦¬ν μ μλ κ²½μ°. κ°μ₯ μΌλ°μ μ΄κ³ ν¬κ΄μ μΈ μλ² μλ¬ μ½λμ
λλ€.
- 502 Bad Gateway (μλͺ»λ κ²μ΄νΈμ¨μ΄):
- μμ²μ μ²λ¦¬νκΈ° μν΄ μλ²κ° μ κ·Όν μμ μλ²/κ²μ΄νΈμ¨μ΄λ‘λΆν° μ ν¨νμ§ μμ μλ΅μ λ°μ κ²½μ°. (μ£Όλ‘ νλ‘μ μλ², λ‘λ λ°Έλ°μ λ±μμ λ°μ)
- 503 Service Unavailable (μλΉμ€λ₯Ό μ¬μ©ν μ μμ):
- μλ²κ° μΌμμ μΌλ‘ κ³ΌλΆν λλ μ κ² μ€μ΄μ΄μ μμ²μ μ²λ¦¬ν μ μλ κ²½μ°. 보ν΅
Retry-After ν€λλ₯Ό ν΅ν΄ μλΉμ€ μ¬κ° μκ°μ μλ €μ€λλ€.
- 504 Gateway Timeout (κ²μ΄νΈμ¨μ΄ μκ° μ΄κ³Ό):
- κ²μ΄νΈμ¨μ΄ μλ²κ° μμ μλ²λ‘λΆν° μ ν΄μ§ μκ° λ΄μ μλ΅μ λ°μ§ λͺ»νμ λ λ°μν©λλ€. (502μ μ μ¬νλ, μκ° μ΄κ³Όκ° μμΈ)
π λ§λ¬΄λ¦¬: μν μ½λ μμ½ λ° λμ μ λ΅
| κ·Έλ£Ή | λ²μ | μλ―Έ | μ±
μ μμ¬ | λμ μ λ΅ |
| 1xx | 100-199 | μ 보 μ 곡 (μ§ν μ€) | μλ²/ν΄λΌμ΄μΈνΈ νμ | μ΅μ’
μλ΅ λκΈ° |
| 2xx | 200-299 | μ±κ³΅ | ν΄λΉ μμ | μ μ μ²λ¦¬ (κ°μ₯ μ’μ) |
| 3xx | 300-399 | 리λ€μ΄λ μ
(λ€λ₯Έ κ³³μΌλ‘ μ΄λ) | μλ² | 리λ€μ΄λ νΈλ URLλ‘ μ¬μμ² |
| 4xx | 400-499 | ν΄λΌμ΄μΈνΈ μ€λ₯ | ν΄λΌμ΄μΈνΈ | μμ² λ°μ΄ν°, URL, κΆν νμΈ λ° μμ |
| 5xx | 500-599 | μλ² μ€λ₯ | μλ² | μλ² λ‘κ·Έ λΆμ λ° μ½λ μμ |
HTTP μν μ½λλ μΉμ μΈμ΄μ
λλ€. μ΄ μ½λλ₯Ό μ΄ν΄νλ κ²μ κ°λ°μλΏλ§ μλλΌ μΉ μλΉμ€λ₯Ό μ΄μ©νλ λͺ¨λ μ΄μκ² ν° λμμ΄ λ©λλ€!