π
Today's Goal
- Statelessκ° λ¬΄μμΈμ§ μμ보μ.
- Request, Responseμ ꡬ쑰μ λν΄μ μμ보μ.
- HTTP request Methodμ μ’
λ₯μ Methodλ€μ μ°¨μ΄μ μ λν΄μ μμ보μ.
- λνμ μΈ Status codeμ μ’
λ₯λ₯Ό μμ보μ.
λ€μ΄κ°κΈ°μ μμ..
HTTPλ?
- HyperText Transfer Protocolμ μ½μ
HyperText
λ§ν¬λ‘ μ΄λ»κ² μ°κ²°λλλ‘ ν κ²μΈκ°? μ¦, HTMLλ‘ λ§λ μΉ νμ΄μ§λ₯Ό μ΄λ»κ² μ£Όκ³ λ°μ κ²μΈκ°?
Transfer
'μ μ‘νλ€'. μΉ νμ΄μ§λ₯Ό λ§λ€μ΄λ μ΄ νμ΄μ§λ₯Ό λ€λ₯Έ μ¬λμκ² λ³΄μ¬μ£Όμ§ μκ³ λ νΌμλ§ λ³Έλ€λ©΄ μλ―Έκ° μμ κ²μ΄λ€. λ°λΌμ μ°λ¦¬κ° λ§λ μΉ μ¬μ΄νΈλ₯Ό λ리 μλ¦¬κ³ λ€λ₯Έ μ¬λλ€κ³Ό 곡μ νκΈ° μν΄μ λ€λ₯Έ μ»΄ν¨ν°μκ² μ μ‘ν΄μΌ ν νμκ° μλ€.
Protocol
ν΅μ κ·μ½. 물리μ μΌλ‘ λ¨μ΄μ§ μ»΄ν¨ν°λΌλ¦¬ μ΄λ»κ² μ 보λ₯Ό μ£Όκ³ λ°μ κ²μΈμ§μ λν μ½μμ΄λ€. μ¦, μ»΄ν¨ν°λΌλ¦¬ μν΅ν λμ μν΅ λ°©λ²μ μλ―Ένλ€.
HTTPλ μ»΄ν¨ν°λ€λΌλ¦¬ HTML νμΌμ μ£Όκ³ λ°μ μ μλλ‘ νλ μν΅ λ°©μ λλ μ½μμ΄λ€.
HTTPμ νΉμ§
1. Request / Response
Requestλ μμ²! Responseλ μλ΅!
- 보λ΄λ 주체μ λ°λ μ£Όμ²΄κ° μλ€.
- 보λ΄λ 주체λ λ°λ 주체μκ² μμ²(Request)λ₯Ό 보λ΄κ³ λ°λ 주체λ μ΄μ λν μλ΅(Response)λ₯Ό 보λΈλ€.
2. βοΈ Stateless
State[μν] + less[μμ]
- κ°κ°μ HTTP ν΅μ (μμ²/μλ΅)μ λ
립μ μ΄λ€. => κ³Όκ±°μ ν΅μ μ λν λ΄μ©μ μ ~ν μμ§ λͺ» νλ€.
- 맀 ν΅μ λ§λ€ νμν λͺ¨λ μ 보λ₯Ό λ΄μμ μμ²μ 보λ΄μΌνλ€λ λ»μ΄λ€.
- λ§μ½ μ¬λ¬ λ²μ ν΅μ μ§ν κ³Όμ μμ μ°μλ λ°μ΄ν° μ²λ¦¬κ° νμν κ²½μ° νμν κ²μ΄ λ°λ‘ λ‘κ·ΈμΈ ν ν°μ΄λ€.
Request / Response
- μμ²μ μ ν΄μΌ μλ΅μ΄ μ μ¨λ€ βοΈ
- μ€μ νλ‘μ νΈλ₯Ό μ§νν λ, νλ‘ νΈμλμμ λ°±μλμκ² λ°μ΄ν°λ₯Ό μμ²νκ³ λ°±μλλ μμ²μ μ²λ¦¬ν΄μ μλ΅μ μ€λ€.
Request / Response ꡬ쑰
HTTP Request Methods
π₯ ν΄λΉ λ©μλλ€μ νλ‘ νΈμλμ μ
μ₯μμ μμ²μ μλκ° λ΄κΈ΄ κ²μ΄λ€!
λ°±μλμ μ
μ₯μμ μκ°νλ©΄ νΌλμ΄ μ¬ μ μμΌλ μ£Όμ!
1. GET
- μ΄λ€ λ°μ΄ν°λ₯Ό μλ²λ‘λΆν° GET, λ°μμ¬ λ μ£Όλ‘ μ¬μ©νλ λ©μλ
- λ°μ΄ν°λ₯Ό λ°μμ€κΈ°λ§ ν λ μ¬μ©
- κ°μ₯ κ°λ¨νκ³ λ§μ΄ μ¬μ©λλ HTTP λ©μλ
- μ¬μ€ μ°λ¦¬κ° μΉνμ΄μ§λ₯Ό λμΈ λ νμν μ 보λ€μ λͺ¨λ GET λ©μλλ‘ μμ²μ 보λ΄μ λ°μμ¨ μλ΅μ νλ©΄μ λμ°λ κ²
π μ₯λ°κ΅¬λμ λ΄μ μ νμ μ‘°ννλ€.
2. POST
- λ°μ΄ν°λ₯Ό μμ±/μμ ν λ μ£Όλ‘ μ¬μ©λλ λ©μλ
- λ°μ΄ν°λ₯Ό μμ± λ° μμ ν λ λ§μ΄ μ¬μ©λκΈ° λλ¬Έμ λλΆλΆμ κ²½μ° μμ²μ bodyκ° ν¬ν¨λμ 보λ΄μ§λ€.
π§Ί μ₯λ°κ΅¬λμ λ§μ λλ μνμ λ΄λλ€.
3. DELETE
- νΉμ λ°μ΄ν°λ₯Ό μλ²μμ μμ ν΄λ¬λΌλ μμ²μ λ³΄λΌ λ μ°λ λ©μλ
β μ₯λ°κ΅¬λμμ μ νμ μμ νλ€.
Response Status Codes
μ€μ νλ‘μ νΈλ₯Ό μ§νν λ κ°μ₯ λ§μ΄ λ³΄κ² λ μλ΅μ μν μ½λλ€μ΄λ€.
1. 200: OK
- κ°μ₯ μμ£Ό λ³΄κ² λ κ²μ
- λ¬Έμ μμ΄ μμ²μ λν μ²λ¦¬κ° λ°±μλ μλ²μμ μ΄λ£¨μ΄μ§κ³ λμ μ€λ μλ΅μ½λ
2. 201: Created
- 무μμΈκ°κ° μ μμ±λμμ λ μ€λ μλ΅μ½λ
- λκ² POST λ©μλμ μμ²μ λ°λΌ λ°±μλ μλ²μ λ°μ΄ν°κ° μ μμ± λλ μμ λμμ λμ 보λ΄λ μ½λ
3. 400: Bad Request
- ν΄λΉ μμ²μ΄ μλͺ»λμμ λ 보λ΄λ Status Code
- μ£Όλ‘ μμ²μ Bodyμ 보λ΄λ λ΄μ©μ΄ μλͺ»λμμ λ μ¬μ©λλ μ½λ
ex) μ νλ²νΈλ₯Ό 보λ΄μΌ νλλ° μ«μκ° μλ λ¬Έμμ΄μ μ£Όμκ° λμ Bodyμ λ΄κ²Όμ κ²½μ°
4. 401: Unauthorized
- μ μ κ° ν΄λΉ μμ²μ μ§ννλ €λ©΄ λ¨Όμ λ‘κ·ΈμΈμ νκ±°λ νμκ°μ
μ΄ νμνλ€λ μλ―Έ
ex) wish list, μ’μμ κΈ°λ₯μ νμμ΄ μλλ©΄ μμ²μ λ³΄λΌ μ μμ
5. 403: Forbidden
- μ μ κ° ν΄λΉ μμ²μ λν κΆνμ΄ μλ€λ λ»
- μ κ·Ό λΆκ°λ₯ν μ 보μ μ κ·Όνμ κ²½μ°
ex) μ€μ§ μ λ£νμλ§ μ κ·Όν μ μλ λ°μ΄ν°λ₯Ό μμ² νμ λ
6. 404: Not Found
- μμ²λ URI κ° μ‘΄μ¬νμ§ μλλ€λ μλ―Έ
500: Internal Server Error
- μλ²μμ μλ¬κ° λ¬μ λμ Status Code
- API κ°λ°μ νλ λ°±μλ κ°λ°μλ€μ΄ μ«μ΄νλ μ½λ
wecodeμμ μ 곡ν μλ£ μ°Έκ³