HTTP
[HTTP μΉ κΈ°λ³Έ μ§μ] HTTP μνμ½λ
yeonii
2023. 12. 9. 13:01
π± HTTP μνμ½λ μκ°
μνμ½λ: ν΄λΌμ΄μΈνΈκ° μλ²λ‘ μμ²μ 보λμ λ, μμ²μ μ²λ¦¬ μνλ₯Ό μλ΅ν΄μ£Όλ κΈ°λ₯
π 1xx (Informational): μμ²μ΄ μμ λμ΄ μ²λ¦¬μ€ β‘οΈ κ±°μ μ¬μ©λμ§ X
2xx (Successful): μμ² μ μ μ²λ¦¬
3xx (Redirection): μμ²μ μλ£νλ €λ©΄ μΆκ° νλ νμ
4xx (Client Error): ν΄λΌμ΄μΈνΈ μ€λ₯, μλͺ»λ λ¬Έλ² λ±μΌλ‘ μλ²κ° μμ²μ μνν μ μμ
5xx (Server Error): μλ² μ€λ₯, μλ²κ° μ μ μμ²μ μ²λ¦¬νμ§ λͺ»ν¨
π± 2xx - μ±κ³΅
200 OK
- ν΄λΌμ΄μΈνΈμ μμ²μ΄ μ μμ μΌλ‘ μ²λ¦¬λμμμ μ리λ μνμ½λ
201 Created
- POSTλ‘ μμ²μ 보λ΄λ©΄ 리μμ€ URIλ₯Ό μλ²μμ μμ±νλ μνμ½λ
- HTTP Header Locationμ μμ±λ 리μμ€μ URI μμ±
202 Accepted
- μμ²μ΄ μ μ λμμΌλ μ²λ¦¬κ° μλ£λμ§ μμ μνμ½λ
- μ μ¬μ©νμ§ X
204 No Content
- μλ²κ° μμ²μ μ±κ³΅μ μΌλ‘ μν νμ§λ§ μλ΅ νμ΄λ‘λ λ³Έλ¬Έμ λ°μ΄ν°κ° μλ μνμ½λ
π± 3xx - 리λ€μ΄λ μ
3xx (Redirection): μμ²μ μλ£νκΈ° μν΄ μ μ μμ΄μ νΈμ μΆκ° μ‘°μΉ νμ
π 300: Multiple Choices
301: Moved Permanently
302: Found
303: See Other
304: Not Modified
307: Temporary Redirect
308: Permanent Redirect
리λ€μ΄λ μ μ μ΄ν΄
리λ€μ΄λ μ μ μ’ λ₯
- μꡬ 리λ€μ΄λ μ
: νΉμ 리μμ€μ URIκ° μꡬμ μΌλ‘ μ΄λ
- /members β‘οΈ /users
- /event β‘οΈ /new-event
- μΌμ 리λ€μ΄λ μ
: μΌμμ μΈ λ³κ²½
- RPG: Post/Redirect/Get
- νΉμ 리λ€μ΄λ μ : κ²°κ³Ό λμ μΊμ μ¬μ©
μꡬ 리λ€μ΄λ μ
- 리μμ€μ URIκ° μꡬμ μΌλ‘ μ΄λ
- μλμ URI μ¬μ© X, κ²μ μμ§ λ±μμλ λ³κ²½ μΈμ§
- μ) /members -> /users, /event -> /new-event
301 Moved Permanently
- 리λ€μ΄λ νΈμ μμ² λ©μλκ° GETμΌλ‘ λ³νκ³ , λ³Έλ¬Έμ΄ μ κ±°λ μ μμ
308 Permanent Redirect
- 301κ³Ό κΈ°λ₯μ κ°μ
- 리λ€μ΄λ νΈμ μμ² λ©μλμ λ³Έλ¬Έ μ μ§
μΌμ 리λ€μ΄λ μ
- 리μμ€μ URIκ° μΌμμ μΌλ‘ λ³κ²½
- λ°λΌμ κ²μ μμ§ λ±μμ URLμ λ³κ²½νλ©΄ μλ¨
- PRG(Post/Redirect/Get)
302 Found
- 리λ€μ΄λ νΈμ μμ² λ©μλκ° GETμΌλ‘ λ³νκ³ , λ³Έλ¬Έμ΄ μ κ±°λ μ μμ
307 Temporary Redirect
- 302μ κΈ°λ₯μ κ°μ
- 리λ€μ΄λ νΈμ μμ² λ©μλμ λ³Έλ¬Έ μ μ§(μμ² λ©μλλ₯Ό λ³κ²½νλ©΄ μλ¨)
303 See Other
- 302μ κΈ°λ₯μ κ°μ
- 리λ€μ΄λ νΈμ μμ² λ©μλκ° GETμΌλ‘ λ³κ²½
PRG (Post/Redirect/Get)
μμ - POSTλ‘ μ£Όλ¬Έ νμ μΉ λΈλΌμ°μ λ₯Ό μλ‘κ³ μΉ¨νλ©΄?
→ μλ‘κ³ μΉ¨μ λ€μ μμ²
→ μ€λ³΅ μ£Όλ¬Έμ΄ λ μ μμ
- POSTλ‘ μ£Όλ¬Έ νμ μλ‘ κ³ μΉ¨μΌλ‘ μΈν μ€λ³΅ μ£Όλ¬Έ λ°©μ§
- POSTλ‘ μ£Όλ¬Έ νμ μ£Όλ¬Έ κ²°κ³Ό νλ©΄μ GET λ©μλλ‘ λ¦¬λ€μ΄λ νΈ
- μλ‘κ³ μΉ¨ν΄λ κ²°κ³Ό νλ©΄μ GETμΌλ‘ μ‘°ν
- μ€λ³΅ μ£Όλ¬Έ λμ μ κ²°κ³Ό νλ©΄λ§ GETμΌλ‘ λ€μ μμ²
- RPG μ¬μ© μ
2. RPG μ¬μ© ν
302, 307, 303 κ·Έλμ λ μ¨μΌ νλμ?
π 302 Found: GetμΌλ‘ λ³ν μ μμ
307 Temporary Redirect: λ©μλκ° λ³νλ©΄ μλ¨
303 See Other: GETμΌλ‘ λ³κ²½ν¨
νΉμ 리λ€μ΄λ μ
300 Multiple Choice
304 Not Modified
π± 4xx - ν΄λΌμ΄μΈνΈ μ€λ₯
4xx (Client Error)
- ν΄λΌμ΄μΈνΈμ μμ²μ μλͺ»λ λ¬Έλ² λ±μΌλ‘ μλ²κ° μμ²μ μνν μ μλ μνμ½λ
- ν΄λΌμ΄μΈνΈκ° μλͺ»λ μμ²μ 보λ΄κ³ μλ κ².
400 Bad Request
- ν΄λΌμ΄μΈνΈκ° μλͺ»λ μμ²μ νκ³ μκΈ° λλ¬Έμ λ°μνλ μνμ½λ
- μμ² κ΅¬λ¬Έ, λ©μμ§ λ±μ μ€λ₯ → μμ² λ΄μ© κ²ν νμ
401 Unauthorized
- ν΄λΌμ΄μΈνΈλ ν΄λΉ 리μμ€μ λν μΈμ¦ νμλ₯Ό μ리λ μνμ½λ
π μΈμ¦(Authentication): λ³ΈμΈμ΄ λꡬμΈμ§ νμΈνλ κ³Όμ
μΈκ°(Authorization): νΉμ 리μμ€μ μ κ·Όν μ μλ κΆνμ΄ μλ μ¬λλ§ λ³Ό μ μλ κΆν
403 Forbidden
- μλ²κ° μμ²μ μ΄ν΄νμ§λ§ κΆνμΌλ‘ μΈν΄ κ±°λΆνλ μνμ½λ
- ex) μΈμ¦ μ격 μ¦λͺ μ μμ§λ§ μ κ·Ό κΆνμ΄ μλ κ²½μ°, μ΄λλ―Ό λ±κΈμ΄ μλ μ¬μ©μκ° λ€λ₯Έ 리μμ€λ‘ λ‘κ·ΈμΈμ νμ§λ§ μ΄λλ―Ό λ±κΈμ 리μμ€μ μ κ·Όνλ κ²½μ° λ±
404 Not Found
- μμ² λ¦¬μμ€λ₯Ό μ°Ύμ μ μλ μνμ½λ
π± 5xx - μλ² μ€λ₯
5xx (Server Error)
- μλ² λ¬Έμ λ‘ μ€λ₯ λ°μ
- μλ²μ λ¬Έμ κ° μκΈ° λλ¬Έμ μ¬μλ νλ©΄ 볡ꡬνκ±°λ μ±κ³΅ν μ μμ
500 Internal Server Error
- μλ² λ΄λΆ λ¬Έμ λ‘ μ€λ₯κ° λ°μν μνμ½λ
503 Service Unvailable
- μλ²κ° μΌμμ μΌλ‘ κ³ΌλΆνκ° λκ±°λ μμ λ μμ μΌλ‘ μ μ μμ²μ μ²λ¦¬ν μ μλ€λ μνμ½λ
- Retry-After ν€λλ‘ μΌλ§ λ€μ 볡ꡬλλμ§ μμ μκ°μ λ³Ό μ μμ