HTTP λ©μλ λͺ©μ°¨
(1) HTTP APIλ₯Ό λ§λ€μ΄λ³΄μ
(2) HTTP λ©μλ - GET, POST
(3) HTTP λ©μλ - PUT, PATCH, DELETE
(4) HTTP λ©μλμ μμ±
π« 1. HTTP APIλ₯Ό λ§λ€μ΄λ³΄μ
λ¬Έμ : νμ μ 보 κ΄λ¦¬ APIλ₯Ό λ§λ€μ΄λΌ
API URI μ€κ³λ₯Ό ν©λλ€.
- νμ λͺ©λ‘ μ‘°ν /read-memeber-list
- νμ μ‘°ν /read-memeber-by-id
- νμ λ±λ‘ /create-member
- νμ μμ /update-member
- νμ μμ /delete-member
μ΄κ²μ μ’μ URI μ€κ³μΌκΉμ ?
κ°μ₯ μ€μν κ²μ 리μμ€ μλ³μ
λλ€.
π API URI κ³ λ―Ό
1. 리μμ€μ μλ―Έλ λκΉ?
- νμμ λ±λ‘νκ³ μμ νκ³ μ‘°ννλκ² λ¦¬μμ€κ° μλλ€!
μ) λ―Έλ€λμ μΊλΌ -> λΌκ³ νλ€λ©΄ μ¬κΈ°μ 'λ―Έλ€λ'μ΄ λ¦¬μμ€λ€. (λͺ
μ¬)
- νμμ΄λΌλ κ°λ
μμ²΄κ° λ°λ‘ 리μμ€λ€.
2. 리μμ€λ₯Ό μ΄λ»κ² μλ³νλκ² μ’μκΉμ?
- νμμ λ±λ‘νκ³ μμ νκ³ μ‘°ννλ κ²μ λͺ¨λ λ°°μ
- νμμ΄λΌλ 리μμ€λ§ μλ³νλ©΄ λλ€. -> νμ 리μμ€λ₯Ό URIμ 맀ν
κ·Έλ¬λ―λ‘
- νμ λͺ©λ‘ μ‘°ν /read-memeber-list
- νμ μ‘°ν /read-memeber-by-id
- νμ λ±λ‘ /create-member
- νμ μμ /update-member
- νμ μμ /delete-member
μ΄ API URIλ μ’μ 리μμ€κ° μλλλ€. νμμ΄λΌλ λͺ
μ¬κ° 리μμ€μ΄κΈ° λλ¬Έμ μ΄λ κ² μ§λ κ²μ΄ λ°λμ§ ν©λλ€.
- νμ λͺ©λ‘ μ‘°ν /memebers -> νμμ΄λκΉ λ©€λ²s
- νμ μ‘°ν /memebers/{id}
- νμ λ±λ‘ /members/{id}
- νμ μμ /members/{id}
- νμ μμ /members/{id}
μ¬κΈ°μ 리μμ€λ 'νμ' μ΄λκΉ membersλ‘ λ¦¬μμ€λ₯Ό λ§λ€μλ€.
νμ§λ§ κ·Έ λ€μ μ‘°ν, λ±λ‘, μμ , μμ λ μ΄λ»κ² ꡬλΆν΄ μ€μΌν μ§ μμ보μ π
리μμ€μ νμλ₯Ό λΆλ¦¬
κ°μ₯ μ€μν κ²μ 리μμ€λ₯Ό μλ³νλ κ²μ΄λ€.
- URIλ 리μμ€λ§ μλ³! "λ―Έλ€λμ μΊλΌ" -> "λ―Έλ€λ"
- 리μμ€μ ν΄λΉ 리μμ€λ₯Ό λμμΌλ‘ νλ νμλ₯Ό λΆλ¦¬νλ€.
(리μμ€ : νμ / νμ : μ‘°ν, λ±λ‘, μμ , λ³κ²½)
- 리μμ€λ λͺ
μ¬, νμλ λμ¬ (λ―Έλ€λμ μΊλΌ)
- νμ(λ©μλ)λ μ΄λ»κ² ꡬλΆν κΉ ?
π« 2. HTTP λ©μλ μ’
λ₯ (μ£Όμ λ©μλ)
- GET : 리μμ€ μ‘°ν
- POST : μμ² λ°μ΄ν° μ²λ¦¬, μ£Όλ‘ λ±λ‘μ μ¬μ©
- PUT : 리μμ€λ₯Ό λ체, ν΄λΉ 리μμ€κ° μμΌλ©΄ μμ±
- PATCH : 리μμ€ λΆλΆ λ³κ²½
- DELETE : 리μμ€ μμ
- HEAD : GETκ³Ό λμΌνμ§λ§ λ©μμ§ λΆλΆμ μ μΈνκ³ , μν μ€κ³Ό ν€λλ§ λ°ννλ€.
- OPTIONS : λμ 리μμ€μ λν ν΅μ κ°λ₯ μ΅μ
(λ©μλ)μ μ€λͺ
(μ£Όλ‘ corsμμ μ¬μ©νλ€)
- CONNECT : λμ μμμΌλ‘ μλ³λλ μλ²μ λν ν°λμ μ€μ (κ±°μ μ¬μ© X)
- TRACE : λμ 리μμ€μ λν κ²½λ‘λ₯Ό λ°λΌ λ©μμ§ λ£¨νλ°± ν
μ€νΈλ₯Ό μν (κ±°μ μ¬μ© X)
GET
- 리μμ€ μ‘°ν
- μλ²μ μ λ¬νκ³ μΆμ λ°μ΄ν°λ Query(쿼리 νλΌλ―Έν°, 쿼리 μ€νΈλ§)λ₯Ό ν΅ν΄μ μ λ¬
- λ©μμ§ λ°λλ₯Ό μ¬μ©ν΄μ λ°μ΄ν°λ₯Ό μ λ¬ν μ μμ§λ§, μ§μνμ§ μλ κ³³μ΄ λ§μμ κΆμ₯νμ§ μλλ€.
POST
- μμ² λ°μ΄ν° μ²λ¦¬
- λ©μμ§ λ°λλ₯Ό ν΅ν΄ μλ²λ‘ μμ² λ°μ΄ν° μ λ¬
- μλ²λ μμ² λ°μ΄ν°λ₯Ό μ²λ¦¬
- λ©μμ§ λ°λλ₯Ό ν΅ν΄ λ€μ΄μ¨ λ°μ΄ν°λ₯Ό μ²λ¦¬νλ λͺ¨λ κΈ°λ₯μ μννλ€.
- μ£Όλ‘ μ λ¬λ λ°μ΄ν°λ‘ μ κ· λ¦¬μμ€ λ±λ‘, νλ‘μΈμ€ μ²λ¦¬μ μ¬μ©
- μ κ· λ¦¬μμ€ μμ±
[μλ΅ λ°μ΄ν°]
ν΄λΌμ΄μΈνΈ μͺ½μμ μλ λ΄μ©μ λ°μ΄ν°λ€μ
HTTP/1.1 201 Created
Content-Type:application/json
Content-Length: 34
Location : /members/100
{
"username":"young",
"age":20
}
μ΄λ κ² λ³΄λ΄μ£Όλ©΄ μλ²μμλ ν΄λΌμ΄μΈνΈ λ°μ΄ν° λ΄μ©λ€μ΄ μ
λ ₯λμ
/members/100 λ©€λ²μ€ 100λ² μ§Έλ₯Ό μλ΅νλ€. (Response)
π μμ² λ°μ΄ν°λ₯Ό μ΄λ»κ² μ²λ¦¬νλ€λ λ»μΌκΉ ?
μμ)
- μ€ν : POST λ©μλλ λμ 리μμ€κ° 리μμ€μ κ³ μ ν μλ―Έ 체κ³μ λ°λΌ μμ²μ ν¬ν¨ λ ννμ μ²λ¦¬νλλ‘ μμ²ν©λλ€.
- μλ₯Ό λ€μ΄ POSTλ λ€μκ³Ό κ°μ κΈ°λ₯μ μ¬μ©λ©λλ€.
1. HTML μμμ μ
λ ₯ λ νλμ κ°μ λ°μ΄ν° λΈλ‘μ λ°μ΄ν° μ²λ¦¬ νλ‘μΈμ€μ μ 곡
(HTMLνΌμ μ
λ ₯ν μ λ³΄λ‘ νμ κ°μ
, μ£Όλ¬Έ λ±μμ μ¬μ©)
2. κ²μν, λ΄μ€ κ·Έλ£Ή, λ©μΌλ§ 리μ€νΈ, λΈλ‘κ·Έ λλ μ μ¬ν κΈ°μ¬ κ·Έλ£Ήμ λ©μμ§ κ²μ
(κ²μν κΈμ°κΈ°, λκΈ λ¬κΈ°)
3. μλ²κ° μμ§ μλ³νμ§ μμ μ 리μμ€ μμ±
(μ κ· μ£Όλ¬Έ μμ±)
4. κΈ°μ‘΄ μμμ λ°μ΄ν°λ₯Ό μΆκ°νλ€.
(ν λ¬Έμ λμ λ΄μ© μΆκ°νκΈ°)
μ 리 : μ΄ λ¦¬μμ€ URIμ POST μμ²μ΄ μ€λ©΄ μμ² λ°μ΄ν°λ₯Ό μ΄λ»κ² μ²λ¦¬ν μ§ λ¦¬μμ€λ§λ€ λ°λ‘ μ ν΄μΌ νλ€.
π POST μ 리
1. μ 리μμ€ μμ±(λ±λ‘)
- μλ²κ° μμ§ μλ³νμ§ μμ μ 리μμ€ μμ±
2. μμ² λ°μ΄ν° μ²λ¦¬
- λ¨μν λ°μ΄ν°λ₯Ό μμ±νκ±°λ, λ³κ²½νλ κ²μ λμ΄μ νλ‘μΈμ€λ₯Ό μ²λ¦¬ν΄μΌ νλ κ²½μ°
μ) μ£Όλ¬Έμμ κ²°μ μλ£ -> λ°°λ¬μμ -> λ°°λ¬μλ£ μ²λΌ λ¨μν κ° λ³κ²½μ λμ΄ νλ‘μΈμ€μ μνκ° λ³κ²½λλ κ²½μ°
- POSTμ κ²°κ³Όλ‘ μλ‘μ΄ λ¦¬μμ€κ° μμ±λμ§ μμ μλ μμ
ν
μ€νΈμ) POST /orders/{orderId}/start-delivery (컨νΈλ‘€ URI)
3. λ€λ₯Έ λ©μλλ‘ μ²λ¦¬νκΈ° μ 맀ν κ²½μ°
μ ) μ‘°νν λλ μ΅λν GETμΌλ‘ νλκ² μ 리νλ€. νμ§λ§, λ³κ²½λκ±°λ νλ‘μΈμ€κ° μ§νλλ κ²½μ° μ λ§ μ΄μ© μ μλ κ²½μ°μλ POSTλ₯Ό μ°λ©΄ μ’λ€.