2021. 1. 3. 10:48γπ Web
λ³Έ ν¬μ€ν μ μ°μν νμ λ€, κΉμν λμ 'λͺ¨λ κ°λ°μλ₯Ό μν HTTP μΉ κΈ°λ³Έ μ§μ' κ°μλ₯Ό μκ° ν μ 리ν κΈμ λλ€.
μꡬμ¬ν
ex) νμ μ 보 κ΄λ¦¬ APIλ₯Ό λ§λ€μ΄λΌ
- νμ λͺ©λ‘ μ‘°ν / read-member-list
- νμ μ‘°ν / read-member-by-id
- νμ λ±λ‘ / create-member
- νμ μμ / update-member
- νμ μμ / delete-member
1. μ°μ API URI μ€κ³ (URL μ€κ³)
-> URI μ€κ³μ μ€μν μ μ 리μμ€ μλ³
2. κ·Έλ λ€λ©΄ 리μμ€λ 무μμΈκ°?
-> νμμ λ±λ‘νκ³ μμ νκ³ μ‘°ννλ νμλ₯Ό 리μμ€μ λ³΄μ§ μλλ€.
-> ex) νμμ λ±λ‘νλΌ ≠ 리μμ€. νμ = 리μμ€
3. 'νμ' μ΄ κ³§ 리μμ€λ€.
-> νμ μ 보 κ΄λ¦¬ μμ€ν μ μ‘΄μ¬νλ μλ§μ κ°λ³μ μΈ 'νμ'λ€μ΄ 리μμ€
-> νμ 리μμ€λ₯Ό URIμ 맀ν
4. νμ 리μμ€λ₯Ό URIμ μλ³ν΄μΌ νλ―λ‘, μλμ²λΌ μμ±ν΄μΌνλ€.
- νμ λͺ©λ‘ μ‘°ν / members/{id}
- νμ μ‘°ν / members/{id}
- νμ λ±λ‘ / members/{id}
- νμ μμ / members/{id}
- νμ μμ / members/{id}
-> λ¬Έμ : μ΄λ»κ² ꡬλ³νμ§?.? (λ€ κ°μ κΌ΄μ΄λ)
5. URIλ 리μμ€λ§ μλ³νκΈ°μ, 리μμ€λ₯Ό λμμΌλ‘ νλ νμλ₯Ό λΆλ¦¬ν΄μΌνλ€.
-> 리μμ€: λͺ μ¬(νμ) / νμ: λμ¬(μ‘°ν, λ±λ‘, μμ , λ³κ²½)
6. νμλ 곧 λ©μλμ΄λ©°, μ΄λ HTTP messageμ μμλΌμΈμ κΈ°μ¬ λμ΄μλ€.
7. HTTP λ©μλ μ’ λ₯
μ£Όμ λ©μλ
- GET: 리μμ€ μ‘°ν
- POST: μμ² λ°μ΄ν° μ²λ¦¬, μ£Όλ‘ λ±λ‘μ μ¬μ© (dataλ₯Ό μ€ν λ μ²λ¦¬ν΄λ¬λΌ)
- PUT: 리μμ€λ₯Ό λ체, ν΄λΉ 리μμ€κ° μμΌλ©΄ μμ±
- PATCH: 리μμ€ λΆλΆ λ³κ²½
- DELETE: 리μμ€ μμ
κΈ°ν λ©μλ
- HEAD: GETκ³Ό λμΌνμ§λ§ λ©μμ§ λΆλΆμ μ μΈνκ³ , μν μ€κ³Ό ν€λλ§ λ°ν
- OPTIONS: λμ 리μμ€μ λν ν΅μ κ°λ₯ μ΅μ (λ©μλ)μ μ€λͺ
- CONNECT: λμ μμμΌλ‘ μλ³λλ μλ²μ λν ν°λμ μ μ
- TRACE: λμ 리μμ€μ λν κ²½λ‘λ₯Ό λ°λΌ λ©μμ§ λ£¨νλ°± ν μ€νΈλ₯Ό μν
8. GET λ©μλ : μλ²λ‘λΆν° μ 보λ₯Ό μ‘°ννκΈ° μν΄ μ€κ³λ λ©μλ
-> 리μμ€ μ‘°ν μν (νμ)
-> λ©μμ§ λ°λλ₯Ό μ¬μ©ν΄μ λ°μ΄ν°λ₯Ό μ λ¬ν μ μμ§λ§, μ§μνμ§ μλ μλ²λ λ§κΈ° λλ¬Έμ κΆμ₯νμ§ μμ.
-> μ¦, μ λ¬νκ³ μΆμ λ°μ΄ν°λ query(쿼리 νλΌλ―Έν°, 쿼리 μ€νΈλ§)λ‘ μ λ¬ (μλ κ·Έλ¦Όμμ, message bodyκ° μμμ μ μ μλ€)
9. GET λ©μλ λμ λ©μ»€λμ¦
10. POST λ©μλ : 리μμ€λ₯Ό μμ±/λ³κ²½νκΈ° μν΄ μ€κ³λ λ©μλ
-> μμ² λ°μ΄ν° μ²λ¦¬
-> GET λ©μλλ (λ©μμ§ λ°λλ₯Ό μ¬μ©νμ§ μκ³ ) μνλ λ°μ΄ν°λ₯Ό κ·Έμ μλ² μ¬μ΄λμμ κ°μ Έμ¬ λΏμ΄λ€.
-> POST λ©μλλ λ©μμ§ λ°λλ₯Ό ν΅ν΄ μλ²λ‘ μμ² λ°μ΄ν°λ₯Ό μ λ¬νλ€.
11. POST λ©μλ (μ κ· λ°μ΄ν°λ₯Ό μμ±ν λ)
-> json νμμΌλ‘ username: 'young', age: 20 μ΄λΌλ λ°μ΄ν°λ₯Ό μλ²μ λ±λ‘μν€κ³ μΆμ λ
-> (μλ₯Ό λ€μ΄, django formλ¬Έμμ κ°λ¨νκ² μ΄λ¦κ³Ό λμ΄λ₯Ό μ κ³ submit λλ₯Ό λμ λ©μ»€λμ¦μ΄λΌ μκ°νμ)
-> 201 Created μλ΅ -> Locationμ λ§λ€μ΄ λΈλ€ -> μ±κ³΅μ μΌλ‘ μλ²μ λ°μ΄ν° λ±λ‘(μμ±)μ΄ λμμ μλ΅λ©μμ§λ‘ λ³΄λΈ κ²
12. POST λ©μλ μ 리
- μ 리μμ€ λ±λ‘(μμ±) -> μλ²κ° μμ§ μλ³νμ§ μμ μ 리μμ€ μμ±
- μμ² λ°μ΄ν° μ²λ¦¬ -> λ¨μ λ°μ΄ν° μμ±, λ³κ²½μ λμ΄ νλ‘μΈμ€λ₯Ό μ²λ¦¬ν΄μΌ νλ κ²½μ°
- λ€λ₯Έ λ©μλλ‘ μ²λ¦¬νκΈ° μ 맀ν κ²½μ° -> μ‘°ν λ°μ΄ν°λ₯Ό λ겨μΌνλλ° GET λ©μλλ₯Ό μ¬μ©νκΈ° μ΄λ €μ΄ κ²½μ°
13. POST μμ² λ°μ΄ν° μ²λ¦¬
-> ex) μ£Όλ¬Έμμ κ²°μ μλ£ - λ°°λ¬ μμ -λ°°λ¬μλ£ μ²λΌ λ¨μ κ° λ³κ²½μ λμ΄ νλ‘μΈμ€ μνκ° λ³κ²½λλ κ²½μ°λ λͺ¨λ POST λ©μλλ‘ μ²λ¦¬
14. HTTP λ©μλμ μμ±
- μμ (safe methods)
- λ©±λ± (idempotent methods)
- μΊμ κ°λ₯ (cacheable methods)
15. μμ
-> νΈμΆν΄λ 리μμ€λ λ³κ²½λμ§ μλλ€. (GET, HEAD: λ¨μ μ‘°νμ΄κΈ° λλ¬Έμ)
Q: μ°μ νΈμΆλ‘ μΈν, λ‘κ·Έκ° μμ΄λ©΄ μ₯μ λ°μνμ§ μλμ?
A: μμ μ ν΄λΉ 리μμ€ μμ²΄λ§ κ³ λ €νλ€. (λ‘κ·Έκ° μμ΄λ κ²μ 리μμ€μλ λ³κ°). μ¦ μ₯μ λ°μ X (μμ νλ€!)
16. λ©±λ±: μνμμ, μ°μ°μ μ¬λ¬ λ² μ μ©νλλΌλ κ²°κ³Όκ° λ¬λΌμ§μ§ μλ μ±μ§μ μλ―Ένλ€.
-> f(f(x)) = f(x)
-> μ¦, μ¬κ·λ₯Ό μ³λ μκΈ° μμ μ΄ λλ€. νλ² νΈμΆνλ , 100λ² νΈμΆνλ κ²°κ³Όλ κ°λ€. μ΄κ²μ΄ λ©±λ±μ΄λ€.
-> POSTλ λ©±λ±μ΄ μλλ€! λ λ² νΈμΆνλ©΄ κ°μ κ²°μ κ° μ€λ³΅ν΄μ λ°μν μ μλλ° μ΄λ κ°μ κ²°κ³Όκ° λ¬λΌμ§κΈ° λλ¬Έμ΄λ€. f(f(x)) ≠ f(x)
-> λ°λ©΄ GETμ 'λ©±λ±'μ μ μ§νλλ‘ μ€κ³λμ΄ μλ€ => λμΌν μμ²μ λ°λ³΅νλ©΄ λμΌν κ²°κ³Όκ° λμμΌνλ€.
17. λ©±λ±μ νμ©
-> μλ 볡ꡬ λ©μ»€λμ¦ : μλ²κ° TIMEOUTλ± μΌλ‘ μ μ μλ΅μ μ£Όμ§ λͺ»ν λ, ν΄λΌμ΄μΈνΈκ° κ°μ μμ²μ κ³μν΄λ λ¬Έμ κ° λμ§ μλκ°?
=> if yes: λ©±λ±μ΄λ€. => if no: λ©±λ±μ΄ μλλ€.
-> μλ²κ° μ μ μλ΅μ μ£Όμ§ λͺ»νλ μν©μμ κ°μ μμ²μ΄ κ³μ λ€μ΄μ¨λ€ => κ°μ μμ²μ΄ λ€μ΄μ€κΈ° λλ¬Έμ κ°μ κ²°κ³Όλ₯Ό 보μ¬μ€μΌ νλ€(λ©±λ±)
=> κ·Έλ μ§ λͺ»νλ€λ©΄(λ€λ₯Έ κ²°κ³Όλ₯Ό 보μ¬μ€λ€λ©΄) λ©±λ±μ΄ μλλ€
18. μΊμ κ°λ₯
-> μλ΅ κ²°κ³Ό 리μμ€λ₯Ό μΊμν΄μ μ¬μ©ν΄λ λλκ°?
-> GET, HEAD, POST, PATCH λ©μλλ μΊμκ°λ₯ -> μ€μ λ‘λ GET, HEAD μ λλ§ μΊμλ‘ μ¬μ© (ꡬνμ΄ μ½μ§μμ~)
-> GETμ λΆνμν μμ²μ μ ννκΈ° μν΄ λμΌν (GET) μμ²μ λν΄ μΊμ μ²λ¦¬ λ μ μλ€.
-> js, css, μ΄λ―Έμ§ κ°μ μ μ 컨ν μΈ λ λ°μ΄ν°μμ΄ ν¬κ³ , λ³κ²½λ μΌμ΄ μ μ΄ λ°λ³΅ν΄μ λμΌν μμ²μ λ³΄λΌ νμκ° μλ€.
-> μ μ 컨ν μΈ λ₯Ό μμ²νκ³ λλ©΄ λΈλΌμ°μ μμλ μμ²μ μΊμν΄λκ³ , λμΌν μμ²μ΄ λ°μν λ μλ²λ‘ μμ²μ 보λ΄μ§ μκ³ μΊμλ λ°μ΄ν°λ₯Ό μ¬μ©. κ·Έλμ νλ‘ νΈμλ κ°λ°μ νλ€λ³΄λ©΄ μ μ 컨ν μΈ κ° μΊμλΌ μ»¨ν μΈ λ₯Ό λ³κ²½ν΄λ λ΄μ©μ΄ λ°λμ§ μλ κ²½μ°κ° μ’ μ’ λ°μνλ€.
(λΈλΌμ°μ μ μΊμλ₯Ό μ§μμ£Όλ©΄ λ€μ 컨ν μΈ λ₯Ό μ‘°ννκΈ° μν΄ μλ²λ‘ μμ²μ 보λ΄κ² λλ€.)
μ°Έκ³
hongsii.github.io/2017/08/02/what-is-the-difference-get-and-post/
'π Web' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
7. HTTP ν€λ 1 - μΌλ° ν€λ (0) | 2021.01.11 |
---|---|
5. HTTP λ©μλ νμ© (0) | 2021.01.03 |
3. HTTP (0) | 2020.12.31 |
2. URIμ μΉ λΈλΌμ°μ μμ² νλ¦ (0) | 2020.12.26 |
1. μΈν°λ· λ€νΈμν¬ (0) | 2020.12.26 |