CS-Network. HTTPμ λν΄
π§· CS-Network μ€ν°λ
μ½λμ€μΏΌλ κ³Όμ μ λ§μΉκ³ νλ‘ νΈμλ κ°λ°μλ‘μ μμμΌλ λ€νΈμν¬ μ§μμ μ±μ°κΈ° μν΄ μμν CS μ€ν°λ!
Tech-Interview-Networkλ₯Ό μ°Έκ³ νμ¬ μ€ν°λλ₯Ό μ§ννκΈ°λ‘ νλ€.
2. HTTP μλ΅μ½λμ λν΄ μ€λͺ ν΄ μ£ΌμΈμ.
HTTP μλ΅μ½λλ HTTP μμ²μ λν μλ΅μΌλ‘ μμ²μ μ²λ¦¬ μνλ₯Ό μλ €μ£Όλ μ½λλ‘ ν΄λΌμ΄μΈνΈμ μλ² κ°μ HTTP ν΅μ μ΄ λ³΅μ‘ν΄μ§μ λ°λΌ μ΄λ₯Ό κ°λ€λκ² νννκΈ° μν΄ λ§λ€μ΄μ‘μ΅λλ€. 100λ²λΆν° 500λ²λλ‘ ν¬κ² 5κ°μ§μ μλ΅μ μ½λλ‘ λνλ
λλ€.
100λ²λλ μμ²μ λ°μ μμ
μ μ§ν μ€
μ΄λΌλ μλ―Έ, 200λ²λλ μμ²μ μ±κ³΅μ μΌλ‘ λ°μκ³ ν΄λΉ μμ²μ μ±κ³΅μ μΌλ‘ μλ£νλ€
λ μλ―Έ, 300λ²λλ ν΄λΉ μμ²μ μλ£νκΈ° μν΄μλ λ€λ₯Έ νμ΄μ§λ‘ 리λ€μ΄λ μ
ν΄μΌνλ€
λ μλ―Έ, 400λ²λλ ν΄λΌμ΄μΈνΈ μΈ‘μ μ€λ₯λ‘, μμ² μμ²΄κ° μ¬λ°λ₯΄μ§ μλ€
λ μλ―Έ, 500λ²λλ μλ²μμ μ€λ₯κ° μ겨 μμ²μ μ²λ¦¬ν μ μλ€
λ μλ―Έμ
λλ€. μΌλ°μ μΌλ‘ ν΅μ μ΄ μ±κ³΅νμ λ, 200λ² κ·Έλ¦¬κ³ ν΄λΌμ΄μΈνΈ μΈ‘μ μμ² λ¦¬μμ€κ° μλ²μ μ‘΄μ¬νμ§ μμ λμ 404λ²μ μμ£Ό λ³Ό μ μμ΅λλ€.
1. 401 (Unauthorized) μ 403 (Forbidden)μ μλ―Έμ μΌλ‘ μ΄λ€ μ°¨μ΄κ° μλμ?
401λ²μ μ¬μ©μκ° μΈμ¦λμ§ μμ μνμμ νΉμ 리μμ€μ μ κ·Όν λ λ°μνκ³ 403λ²μ μ¬μ©μκ° μΈμ¦λμ΄μμ§λ§ ν΄λΉ μ¬μ©μμκ²λ λΆμ¬λμ§ μμ κΆνμ μ κ·Όν λ λ°μν©λλ€. κ·Όλ³Έμ μΌλ‘ μ΄ λμ ν° μ°¨μ΄λ νμ¬ μ μ κ° μΈμ¦μ΄ λμ΄μλλ, λμ΄μμ§ μλλμ λλ€.
2. 200 (ok) μ 201 (created) μ μ°¨μ΄μ λν΄ μ€λͺ ν΄ μ£ΌμΈμ.
200λ²μ ν΄λΌμ΄μΈνΈκ° μλ²μκ² μμ²ν μμ μ΄ μ±κ³΅μ μΌλ‘ μνλμμμ λνλ λλ€. λ§μ°¬κ°μ§λ‘ 201λ²λ ν΄λΌμ΄μΈνΈμ μμ²μ΄ μ±κ³΅νλ€λ μλ―Έμ§λ§ μ’λ λμκ°μ μλ²μ μλ‘μ΄ λ¦¬μμ€κ° μμ±λμμμ λνλ λλ€.κ·Έλ¬λ―λ‘ λ³΄ν΅ POST, PUT μμ² μ±κ³΅μ λν μλ΅μ λνλ λλ€.
3. HTTP Method μ λν΄ μ€λͺ ν΄ μ£ΌμΈμ.
HTTP λ©μλλ ν΄λΌμ΄μΈνΈκ° μλ²μ μ΄λ€ μμ μ μμ²ν μ§ μ¦, μ΄λ€ μ’ λ₯μ μμ²μΈμ§λ₯Ό λνλ λλ€. μΌλ°μ μΌλ‘ GET, POST, PUT, PATCH, DELETE 5κ°μ§μ λ©μλκ° μμ£Ό μ¬μ©λ©λλ€.
1. HTTP Methodμ λ©±λ±μ±μ λν΄ μ€λͺ ν΄ μ£ΌμΈμ.
λ©±λ±μ±μ νΉμ μ°μ°μ 1λ² ν κ²κ³Ό μ¬λ¬ λ² μ§νν κ²μ΄ λμΌν κ²°κ³Όλ₯Ό κ°μ§λ μ±μ§μ λλ€. μ¦, HTTP λ©μλμ λ©±λ±μ±μ λμΌν μμ²μ 1λ² λ³΄λ΄λ κ²κ³Ό μ¬λ¬ λ² λ³΄λ΄λ κ²μ κ²°κ³Όκ° λμΌνλ€λ κ²μ μλ―Έν©λλ€. μ¦, λ©±λ±μ±μ ν΅μ¬μ βμ¬λ¬λ² μ°μ°μ μ§νν΄λ μκ΄μλ€.βλ κ²μ μμ΅λλ€. μλ₯Ό λ€μ΄ GET λ©μλμ κ²½μ° 1λ² μμ²μ 보λ΄κ±°λ μ¬λ¬ λ² μμ²μ 보λ΄λ κ·Έ κ²°κ³Όκ° μΈμ λ λμΌνλ―λ‘ λ©±λ±μ±μ κ°μ§λλ€. μ΄λ κ² λ©±λ±μ±μ κ°λ λνμ μΈ λ©μλλ GET, PUT, DELETEκ° μμ΅λλ€. λ°λλ‘ POSTμ κ°μ΄ 1λ² λ³΄λ΄λ©΄ μμ²μ λν΄ μ΄λ€ λ°μ΄ν°λ₯Ό 1λ² μμ±νκ³ μ¬λ¬ λ² λ³΄λ΄λ©΄ μ΄λ€ λ°μ΄ν°λ₯Ό μ¬λ¬ λ² μμ±νκΈ° λλ¬Έμ λμ κ²°κ³Όκ° λμΌνμ§ μμ λ©±λ±νμ§ μμ΅λλ€. μΆκ°λ‘ λ°μ΄ν°μ μΌλΆλ₯Ό μμ νλ PATCHμ κ²½μ°, μμ²μ 쑰건μ λ°λΌ λ©±λ± μ λ¬΄κ° λ¬λΌμ§λλ€. βμ΄λ€ μ μ μ μ΄λ©μΌμ νΉμ μ΄λ©μΌλ‘ λ³κ²½νλβ PATCH μμ²μ κ²½μ°, 1λ² λ³΄λ΄λ μ¬λ¬ λ² λ³΄λ΄λ λμΌν μ΄λ©μΌλ‘ λ³κ²½λλ―λ‘ λ©±λ±ν©λλ€. κ·Έλ μ§λ§ βνΉμ μ μ μ λ°©λ¬Έ νμλ₯Ό 1μ© μ¦κ°μν€λλ‘ λ³κ²½νλβ PATCH μμ²μ κ²½μ°, 1λ² λ³΄λ΄λ κ²κ³Ό μ¬λ¬ λ² λ³΄λ΄λ κ²μ κ²°κ³Όκ° λ¬λΌμ§λ―λ‘ λ©±λ±νμ§ μκ² λ©λλ€.
κΆκΈμ¦. POSTκ° μλ GETμΌλ‘λ λ°μ΄ν°λ₯Ό μμ±νλ κ²½μ°λ μλ κ±Έλ‘ μκ³ μλλ°, μ΄λ° κ²½μ° GETμ λ©±λ±μ±μ΄ μμ΄μ§λ κ² μλκ°? ν΄κ²°. GETμΌλ‘λ μλ²μ λ°μ΄ν°λ₯Ό μμ±νλ κ² λΆκ°λ₯ν κ²μ μλλ€. κ·Έλ μ§λ§ μλ°ν HTTP νλ‘ν μ½μμμ GET λ©μλλ μμ νκ³ λ©±λ±ν΄μΌνλ€. μ¦, μ μ΄μ GETμΌλ‘ λ°μ΄ν°λ₯Ό μμ±νλ μμ²μ 보λ΄λ κ² μμ²΄κ° HTTP νλ‘ν μ½μ μμΉμ κΉ¬ κ²μ΄λ€. μ΄λ κ² λλ©΄ μΉ μ€ν¬λ©ν, μΉ μλ² λ‘κ·Έ λΆμ, μΊμ± λ±μμ λ¬Έμ κ° λ°μν μ μλ€.
2. GETκ³Ό POSTμ μ°¨μ΄λ 무μμΈκ°μ?
λ¨Όμ λ°μ΄ν°λ₯Ό μ μ‘νλ κ΄μ μμ λ§μλλ¦¬κ² μ΅λλ€. GETμ URLμ μΌλΆλ‘ λ°μ΄ν°λ₯Ό μ μ‘νκ³ POSTλ μμ²μ λ³Έλ¬Έ(body)μΌλ‘ λ°μ΄ν°λ₯Ό μ μ‘ν©λλ€. κ·Έλ κΈ°μ GETμ λ³Έλ¬Έμ λ°μ΄ν°κ° λ ΈμΆλμ΄ λ³΄μμ λΉκ΅μ μ·¨μ½νλ€κ³ λΈλΌμ°μ μ url μ νμ λ°λ₯Έ λ°μ΄ν° ν¬κΈ° μ νμ΄ μλ€λ λ¨μ μ΄ μμ΅λλ€. λ°λ©΄ POSTλ μμ²μ λ³Έλ¬Έμ λ°μ΄ν°λ₯Ό μ μ‘νκΈ°μ 보μμ΄ λΉκ΅μ κ°νκ³ λ°μ΄ν° ν¬κΈ°μ μ νμ΄ λΉκ΅μ μ¬μ λ‘λ€λ μ₯μ μ΄ μμ΅λλ€.
λ€μμΌλ‘ μμ μ±κ³Ό λ©±λ±μ±μ κ΄μ μ λλ€. GETμ μμ νκ³ λ©±λ±νκΈ° λλ¬Έμ μ¬λ¬ λ² μμ²μ 보λ΄λ μλ² νΉμ DBμ μνλ₯Ό λ³κ²½μν€μ§ μμ΅λλ€. λ°λ©΄, POSTμ κ²½μ° μμ²μ λ°λΌ μλ²μ μνλ₯Ό λ³κ²½μν€κΈ° λλ¬Έμ μμ νκ³ λ©±λ±νμ§ μμ΅λλ€.
μμ νΉμ§λ€μ λ°λΌ GETμ μ£Όλ‘ λ°μ΄ν°λ₯Ό μ‘°ννλ λ° μ¬μ©λκ³ POSTλ μλ²μ λ°μ΄ν°λ₯Ό μ μ‘νκ±°λ μλ²μ μνλ₯Ό λ³κ²½νλλ° μ¬μ©ν©λλ€.
3. POSTμ PUT, PATCHμ μ°¨μ΄λ 무μμΈκ°μ?
3κ°μ§ λ©μλ λͺ¨λ μλ²μ μνλ₯Ό λ³κ²½νλ λ° μ¬μ©λ©λλ€. λ€λ§, POSTλ μ£Όλ‘ μλ²μ μλ‘μ΄ λ°μ΄ν°λ₯Ό μμ±ν λ μ¬μ©λ©λλ€. μ¦, λ©±λ±νμ§ μμ΅λλ€. PUTμ κΈ°μ‘΄μ λ°μ΄ν°λ₯Ό μμ ν μλ‘μ΄ μνλ‘ μ λ°μ΄νΈνκ±°λ μλ‘μ΄ λ°μ΄ν°λ₯Ό μμ±νλ λ° μ¬μ©λ©λλ€. PUTμ κ²½μ° λ©±λ±μ±μ κ°μ§λλ€. PATCHλ κΈ°μ‘΄ λ°μ΄ν°μ μΌλΆλ₯Ό λ³κ²½νλ λ° μ¬μ©λλ λ©μλλ‘, μμ²μ ννμ λ°λΌ λ©±λ± μ λ¬΄κ° λ¬λΌμ§λλ€. βμ΄λ€ μ μ μ μ΄λ©μΌμ νΉμ μ΄λ©μΌλ‘ λ³κ²½νλβ PATCH μμ²μ κ²½μ°, 1λ² λ³΄λ΄λ μ¬λ¬ λ² λ³΄λ΄λ λμΌν μ΄λ©μΌλ‘ λ³κ²½λλ―λ‘ λ©±λ±ν©λλ€. κ·Έλ μ§λ§ βνΉμ μ μ μ λ°©λ¬Έ νμλ₯Ό 1μ© μ¦κ°μν€λλ‘ λ³κ²½νλβ PATCH μμ²μ κ²½μ°, 1λ² λ³΄λ΄λ κ²κ³Ό μ¬λ¬ λ² λ³΄λ΄λ κ²μ κ²°κ³Όκ° λ¬λΌμ§λ―λ‘ λ©±λ±νμ§ μκ² λ©λλ€.
4. HTTP 1.1 μ΄νλ‘, GETμλ Bodyμ λ°μ΄ν°λ₯Ό μ€μ μ μκ² λμμ΅λλ€. κ·ΈλΌμλ λΆκ΅¬νκ³ μ μμ§λ μ΄λ° λ°©μμ μ§μνλ κ²μΌκΉμ?
HTTPλ μμ© κ³μΈ΅μ νλ‘ν μ½λ‘μ κ²°κ΅ νλμ μ½μμ΄κΈ° λλ¬Έμ λλ€. HTTPμ λ²μ κ³Όλ μκ΄μμ΄ GET λ©μλλ μμ μ±κ³Ό λ©±λ±μ±μ μ μ§ν΄μΌν©λλ€. μ¦, μλ²μ μνλ₯Ό μ λ°μ΄νΈνλ©΄ HTTPλΌλ μ½μμ μ΄κΈ°λ κ²μ΄ λ©λλ€. HTTP 1.1λΆν° λͺ μΈμ μΌκ΄μ±κ³Ό μ μ°μ±μ μν΄ λͺ¨λ HTTP λ©μλκ° μμ² λΌμΈ(request line), ν€λ(header), λ³Έλ¬Έ(body) ꡬ쑰λ₯Ό κ°κ² μμ±λμμ λΏ, GETμΌλ‘ bodyμ λ°μ΄ν°λ₯Ό λ΄λ κ² μ³λ€λ κ²μ μλλλ€. λ§μ½ λ°μ΄ν°λ₯Ό μμ² λ³Έλ¬Έ(body)μ λ΄μ GET μμ²μ 보λ΄κ² λλ©΄ μΉ μ€ν¬λ©ν, μΉ μλ² λ‘κ·Έ λΆμ, μΊμ± λ±μμ λ¬Έμ κ° λ°μν μ μμ΅λλ€. μ΄λ₯Ό ν΄κ²°νκΈ° μν΄ λ§μ μλ²μ ν΄λΌμ΄μΈνΈ ꡬν체λ λ³Έλ¬Έ(body)μ ν¬ν¨ν GET μμ²μ 무μνκ±°λ μ€λ₯λ₯Ό λ°ννκ² νκ³ μμ΅λλ€.
- π§· CS-Network μ€ν°λ
- 1. 401 (Unauthorized) μ 403 (Forbidden)μ μλ―Έμ μΌλ‘ μ΄λ€ μ°¨μ΄κ° μλμ?
- 2. 200 (ok) μ 201 (created) μ μ°¨μ΄μ λν΄ μ€λͺ ν΄ μ£ΌμΈμ.
- 1. HTTP Methodμ λ©±λ±μ±μ λν΄ μ€λͺ ν΄ μ£ΌμΈμ.
- 2. GETκ³Ό POSTμ μ°¨μ΄λ 무μμΈκ°μ?
- 3. POSTμ PUT, PATCHμ μ°¨μ΄λ 무μμΈκ°μ?
- 4. HTTP 1.1 μ΄νλ‘, GETμλ Bodyμ λ°μ΄ν°λ₯Ό μ€μ μ μκ² λμμ΅λλ€. κ·ΈλΌμλ λΆκ΅¬νκ³ μ μμ§λ μ΄λ° λ°©μμ μ§μνλ κ²μΌκΉμ?