π HTTP μνμ½λ
ν΄λΌμ΄μΈνΈκ° λ³΄λΈ μμ²μ μ²λ¦¬ μνλ₯Ό μλ΅μμ μλ €μ£Όλ κΈ°λ₯
- 1xx (Informational) : μ²λ¦¬μ€ -> κ±°μ μ¬μ©x
- 2xx (Successful): μμ² μ μ μ²λ¦¬
- 3xx(Redirection) : μμ²μ μλ£νκΈ° μν΄μλ μΆκ° νλμ΄ νμ
- 4xx(Client Error) : ν΄λΌμ΄μΈνΈ μ€λ₯, μλͺ»λ λ¬Έλ² λ±μΌλ‘ μλ²κ° μμ²μ μνν μ μμ
- 5xx(Server Error) : μλ² μ€λ₯, μλ²κ° μ μμ μΌλ‘ μμ²μ μ²λ¦¬νμ§ λͺ»ν¨
β λ§μ½ λͺ¨λ₯΄λ μν μ½λκ° λνλλ©΄?
- μλ²κ° λ°νν μνμ½λλ₯Ό ν΄λΌμ΄μΈνΈκ° μΈμν μ μμΌλ©΄?
- ν΄λΌμ΄μΈνΈλ μμ μνμ½λλ‘ ν΄μν΄μ μ²λ¦¬
- λ―Έλμ μλ‘μ΄ μνμ½λκ° μΆκ°λμ΄λ ν΄λΌμ΄μΈνΈλ₯Ό λ³κ²½νμ§ μμλ λ¨
- μ
- 299? -> 2xx (Successful)
- 451? -> 4xx (Client Error)
π 2xx (Successful)
ν΄λΌμ΄μΈνΈμ μμ²μ μ±κ³΅μ μΌλ‘ μ²λ¦¬
β 200 OK
- μμ² μ±κ³΅
β 201 Created
- μμ²μ μ±κ³΅ν΄μ μλ‘μ΄ λ¦¬μμ€κ° μμ±λ¨ (POSTλ‘ λ±λ‘λμμλ)
- μμ±λ 리μμ€λ μλ΅μ Location ν€λ νλλ‘ μλ³
β 202 Accepted
- μμ²μ΄ μ μλμμΌλ μ²λ¦¬κ° μλ£λμ§ μμμ
- λ°°μΉ μ²λ¦¬ κ°μ κ³³μμ μ¬μ© e.g. μμ² μ μ ν 1μκ° λ€μ λ°°μΉ νλ‘μΈμ€κ° μμ²μ μ²λ¦¬ν¨
- μ μ¬μ©νμ§ μμ
β 204 No Content
μλ²κ° μμ²μ μ±κ³΅μ μΌλ‘ μννμ§λ§ μλ΅ νμ΄λ‘λ λ³Έλ¬Έμ λ³΄λΌ λ°μ΄ν°κ° μμ
- e.g. μΉ λ¬Έμμμ save λ²νΌ
- save λ²νΌμ κ²°κ³Όλ‘ μ무 λ΄μ©μ΄ μμ΄λ λ¨
- save λ²νΌμ λλ¬λ κ°μ νλ©΄ μ μ§
- κ²°κ³Ό λ΄μ©μ΄ μμ΄λ 204 λ©μΈμ§ λ§μΌλ‘ μ±κ³΅ μΈμ κ°λ₯
μ΄μΈμλ 2xxμ μ’ λ₯λ λ§μ§λ§ λ€ μ¬μ©ν기보λ€λ κ°λ°ν λ λ²μλ₯Ό μ ν΄μ μ¬μ©
π 3xx (Redirection)
μμ²μ μλ£νκΈ° μν΄ μ μ μμ΄μ νΈμ μΆκ° μ‘°μΉ νμ
- 301~308μ λ§μ΄ μ¬μ©ν¨
- μΉ λΈλΌμ°μ λ 3xxμλ΅μ κ²°κ³Όμ Location ν€λκ° μμΌλ©΄ Location μμΉλ‘ μλ μ΄λ(리λ€μ΄λ νΈ)
π 리λ€μ΄λ μ μ΄ν΄
β μꡬ 리λ€μ΄λ μ (301, 308)
- νΉμ 리μμ€μ URIκ° μꡬμ μΌλ‘ μ΄λ
- μλμ URLμ μ¬μ©X, κ²μ μμ§ λ±μμλ λ³κ²½ μΈμ§
- e.g. /event -> /new-event (μλ‘μ΄ μ΄λ²€νΈ νμ΄μ§ μμ±)
π» 301 Moved Permanently
- 리λ€μ΄λ νΈμ μμ² λ©μλκ° GETμΌλ‘ λ³νκ³ λ³Έλ¬Έμ΄ μ κ±°λ μ μμ(MAY)
π» 308 Permanent Redirect
- 301κ³Ό κΈ°λ₯μ κ°μ
- 리λ€μ΄λ νΈμ μμ² λ©μλμ λ³Έλ¬Έμ μ μ§ν¨ (μ²μ POSTλ₯Ό 보λ΄λ©΄ 리λ€μ΄λ νΈλ POST μ μ§)
μ€λ¬΄μμλ URIκ° λ°λλ©΄ μ λ¬λ°μμΌ νλ λ°μ΄ν°κ° λ³κ²½λλ κ²½μ°κ° λ§μΌλ―λ‘ 301μ λ λ§μ΄ μ¬μ©νλ€. κ·Όλ° λλ€ μ μ¬μ©λμ§ μμ
β μΌμμ μΈ λ¦¬λ€μ΄λ μ (302, 307, 303)
- 리μμ€μ URIκ° μΌμμ μΌλ‘ λ³κ²½λ¨
- μ€λ¬΄μμ λ§μ΄ μ¬μ©λ¨!
- 307, 303μ κΆμ₯νμ§λ§ νμ€μ μΌλ‘ μ΄λ―Έ λ§μ μ ν리μΌμ΄μ λΌμ΄λΈλ¬λ¦¬λ€μ΄ 302λ₯Ό κΈ°λ³Έ κ°μΌλ‘ μ¬μ©ν¨
π» 302 Found
- 리λ€μ΄λ νΈμ μμ² λ©μλκ° GETμΌλ‘ λ³νκ³ , λ³Έλ¬Έμ΄ μ κ±°λ μ μμ(MAY)
π» 307 Temporary Redirect
- 302μ κΈ°λ₯μ κ°μ
- 리λ€μ΄λ νΈμ μμ² λ©μλμ λ³Έλ¬Έμ μ μ§ν΄μΌ ν¨(MUST NOT λ³κ²½)
π» 303 See Other
- 302μ κΈ°λ₯μ κ°μ
- 리λ€μ΄λ νΈμ μμ² λ©μλκ° GETμΌλ‘ λ³κ²½(MUST)
β PRG: Post/Redirect/Get
μΌμμ 리λ€μ΄λ μ μμ μμ£Ό μ¬μ©λλ ν¨ν΄
π» PRG μ¬μ©μ
POSTλ‘ μ£Όλ¬Έ νμ μΉ λΈλΌμ°μ λ₯Ό μλ‘κ³ μΉ¨νλ©΄? → μ€λ³΅ μ£Όλ¬Έμ΄ λ μ μμ
π» PRG ν¨ν΄μ μ¬μ©νλ©΄
- POSTλ‘ μ£Όλ¬Έ ν μλ‘ κ³ μΉ¨μΌλ‘ μΈν μ€λ³΅ μ£Όλ¬Έ λ°©μ§
- μ£Όλ¬Έ ν μ£Όλ¬Έ κ²°κ³Ό νλ©΄μ GET λ©μλλ‘ λ¦¬λ€μ΄λ νΈ
- μλ‘κ³ μΉ¨ν΄λ μ€λ³΅ μ£Όλ¬Έ λμ κ²°κ³Ό νλ©΄μ GETμΌλ‘ μ‘°ν
μ¬μ©μ±μ΄ μ’μ → μ¬μ©μ μ μ₯μμλ μ’κ³ , μλ²μμμ μ€λ₯λ λ§μ μ μμ
β κΈ°ν 리λ€μ΄λ μ (300, 304)
π» 304 Not Modified
- μΊμλ₯Ό λͺ©μ μΌλ‘ μ¬μ©
- ν΄λΌμ΄μΈνΈμκ² λ¦¬μμ€κ° μμ λμ§ μμμμ μλ €μ€. λ°λΌμ ν΄λΌμ΄μΈνΈλ λ‘컬 PCμ μ μ₯λ μΊμλ₯Ό μ¬μ¬μ©ν¨ (μΊμλ‘ λ¦¬λ€μ΄λ νΈ)
- 304 μλ΅μ μλ΅μ λν λ©μΈμ§ λ°λλ₯Ό ν¬ν¨νλ©΄ μλ¨ (λ‘컬 μΊμλ₯Ό μ¬μ©ν΄μΌ νλ―λ‘)
- μ‘°κ±΄λΆ GET, HEAD μμ²μ μ¬μ©
π 4xx (Client Error)
- ν΄λΌμ΄μΈνΈμ μμ²μ μλͺ»λ λ¬Έλ² λ±μΌλ‘ μλ²κ° μμ²μ μνν μ μμ
- μ€λ₯μ μμΈμ΄ ν΄λΌμ΄μΈνΈμκ² μμ
- μ€νμ μ§ν€μ§ μκ±°λ μΈμ¦μ΄ μλ μΌμ΄μ€κ° κ°μ₯ λ§μ
- ν΄λΌμ΄μΈνΈκ° μ΄λ―Έ μλͺ»λ μμ², λ°μ΄ν°λ₯Ό 보λ΄κ³ μκΈ°λλ¬Έμ μ¬μλν΄λ μμ² μ€ν¨ν¨ (μμ² μμ νμ)
β 400 Bad Request
- ν΄λΌμ΄μΈνΈκ° μλͺ»λ μμ²μ ν΄μ μλ²κ° μμ²μ μ²λ¦¬ν μ μμ
- μμ² κ΅¬λ¬Έ, λ©μΈμ§ λ± μ€λ₯
- ν΄λΌμ΄μΈνΈλ μμ² λ΄μ©μ κ²ν νκ³ λ€μ 보λ΄μΌ ν¨
- ex) μμ² νλΌλ―Έν°κ° μλͺ»λκ±°λ, API μ€νμ΄ λ§μ§ μμλ
β 401 Unauthorized
- ν΄λΌμ΄μΈνΈκ° ν΄λΉ 리μμ€μ λν μΈμ¦μ΄ νμν¨
- μΈμ¦(Authentication)μ΄ λμ§ μμ
- μ€λ₯ λ°μμ μλ΅μ WWW-Authenticate ν€λμ ν¨κ» μΈμ¦ λ°©λ²μ μ€λͺ
- μ°Έκ³
- μΈμ¦(Authentication) : λ³ΈμΈμ΄ λꡬμΈμ§ νμΈ (λ‘κ·ΈμΈ)
- μΈκ°(Authorization) : κΆν λΆμ¬ (νΉμ 리μμ€μ μ κ·Όν μ μλ κΆν, μΈμ¦μ΄ μμ΄μΌ μΈκ°κ° μμ)
β 403 Forbidden
- μλ²κ° μμ²μ μ΄ν΄νμ§λ§ μΉμΈμ κ±°λΆν¨
- μ£Όλ‘ μΈμ¦ μ격 μ¦λͺ μ μμ§λ§ μ κ·Ό κΆνμ΄ λΆμΆ©λΆν κ²½μ°
- ex) μ΄λλ―Ό λ±κΈμ΄ μλ μ¬μ©μκ° λ‘κ·ΈμΈμ νμ§λ§, μ΄λλ―Ό λ±κΈμ 리μμ€μ μ κ·Όνλ κ²½μ°
β 404 Not Found
- μμ² λ¦¬μμ€λ₯Ό μ°Ύμ μ μμ (μλ²μ μμ)
- λλ ν΄λΌμ΄μΈνΈκ° κΆνμ΄ λΆμ‘±ν 리μμ€μ μ κ·Όν λ ν΄λΉ 리μμ€λ₯Ό μ¨κΈ°κ³ μΆμλ (403 λμ μ¬μ©νκΈ°λ ν¨)
π 5xx (Server Error)
- μλ² λ¬Έμ λ‘ μ€λ₯ λ°μ
- μ¬μλνλ μμ μ μλ²μ λ¬Έμ κ° ν΄κ²°λ μ μμΌλ―λ‘ μμ²μ΄ μ±κ³΅λ μ μμ (μλ²μ λ¬Έμ e.g. NPE, DB μ κ·Ό λ¬Έμ λ±)
- μ¬λ§νλ©΄ 500 μλ¬λ₯Ό λ΄λ©΄ μλ¨ → μ§μ§ μλ²μ λ¬Έμ κ° μμλλ§!
β 500 Internal Server Error
- μλ² λ¬Έμ λ‘ μ€λ₯ λ°μ, μ λ§€νλ©΄ 500 μ€λ₯ λ°μ μν€κΈ°
β 503 Service Unavailable
- μλ²κ° μΌμμ μΈ κ³ΌλΆν λλ μμ λ μμ μΌλ‘ μ μ μμ²μ μ²λ¦¬ν μ μμ
- Retry-After ν€λ νλλ‘ μΌλ§λ€μ 볡ꡬλλμ§ λ³΄λΌ μλ μμ
κ°μ μλ£
λͺ¨λ κ°λ°μλ₯Ό μν HTTP μΉ κΈ°λ³Έ μ§μ - μΈνλ° | κ°μ
μ€λ¬΄μ κΌ νμν HTTP ν΅μ¬ κΈ°λ₯κ³Ό μ¬λ°λ₯Έ HTTP API μ€κ³ λ°©λ²μ νμ΅ν©λλ€., - κ°μ μκ° | μΈνλ°...
www.inflearn.com
'WEB' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[HTTP] HTTP ν€λ - (1) μΌλ° ν€λ (0) | 2022.03.14 |
---|---|
[HTTP] HTTP λ©μλ νμ© (0) | 2022.03.13 |
[HTTP] API URI μ€κ³μ HTTP λ©μλ (0) | 2022.03.13 |