"λ©μμ§λ μ μλ² λ°©ν₯μ μΈλ°μ΄λλ‘ νμ¬ μ‘μ λλ€"
" λ€μ΄μ€νΈλ¦ΌμΌλ‘ νλ₯΄λ λ©μμ§ "
(μμ²μμλ νλ½μ 1μ΄ νλ½μ 3μ μ μ€νΈλ¦Όμ΄μ§λ§, μλ΅μμλ νλ½μ 3μ΄ νλ½μ 1μ μ μ€νΈλ¦Όμ΄ λ μλ μλ€.)
HTTP λ©μμ§λ λ¨μν, λ°μ΄ν°μ ꡬ쑰νλ λΈλ‘
κ° λ©μμ§λ ν΄λΌμ΄μΈνΈλ‘λΆν° μμ²μ΄λ μλ²λ‘λΆν°μ μλ΅ μ€ νλλ₯Ό ν¬ν¨νλ€.
Content-type: text/plain # λ³Έλ¬Έμ΄ λ¬΄μμΈμ§ λ§ν΄μ€
Content-length: 19 # λ³Έλ¬Έμ ν¬κΈ°: 19byte
μμμ€ & ν€λλΈλ‘ β μ€ λ¨μλ‘ λΆλ¦¬λ μμ€ν€ λ¬Έμμ΄
(κ° μ€μ μΊλ¦¬μ§λ¦¬ν΄(ACSII 13) & κ°νλ¬Έμ(ACSII 10)λ‘ κ΅¬μ±λ λ κΈμμ μ€λ°κΏ λ¬Έμμ΄(CRLF)λ‘ λλλ€)
λ³Έλ¬Έ β μμμ€, ν€λλΈλ‘κ³Ό λ¬λ¦¬ λ³Έλ¬Έμ ν μ€νΈμ μ΄μ§λ°μ΄ν°(ex) μ΄λ―Έμ§λ λμμ)λ₯Ό ν¬ν¨ν μ μκ³ , κ·Έλ₯ λΉμ΄μμ μλ μμ
λͺ¨λ HTTP λ©μμ§
μμ²: μΉ μλ²μ μ΄λ€ λμμ μꡬ
μλ΅: μμ²μ μν κ²°κ³Όλ₯Ό ν΄λΌμ΄μΈνΈμκ² λλ €μ€ (μνμ 보μ κ²°κ³Ό λ°μ΄ν° λ±)
β λλ€ κΈ°λ³Έμ κ΅¬μ‘°κ° κ°μ!
<λ©μλ> <μμ² Url> <λ²μ >
<ν€λ>
<μν°ν° λ³Έλ¬Έ>
<λ²μ > <μν μ½λ> <μ¬μ ꡬμ >
<ν€λ>
<μν°ν° λ³Έλ¬Έ>
μμ²: <λ©μλ> <μμ² URL> <λ²μ > (곡백μΌλ‘ ꡬλΆ)
λ©μλ
: ν΄λΌμ΄μΈνΈ μΈ‘μμ μλ²κ° 리μμ€μ λν΄ μνν΄μ£ΌκΈ° λ°λΌλ λμ (μ΄λ€ λμμ΄ μΌμ΄λμΌ νλμ§ μ€λͺ
ν΄μ£Όλ λ©μλ)μμ² URL
: μμ² λμμ΄ λλ 리μμ€λ₯Ό μ§μΉνλ μμ ν URL νΉμ URLμ κ²½λ‘ κ΅¬μ± μμ
(리μμ€λ₯Ό κ°λ¦¬ν€λ μ λ κ²½λ‘μ΄κΈ°λ§ νλ©΄ λμ²΄λ‘ λ¬Έμ x, ex) /item/list.txt )
λ²μ
: μ΄ λ©μμ§μμ μ¬μ©μ€μΈ HTTPμ λ²μ
νμ: HTTP/<λ©μ΄μ >.<λ§μ΄λ> β ex) HTTP/1.0
μλ΅: <λ²μ > <μνμ½λ> <μ¬μ ꡬμ >
μν κ²°κ³Όμ λν μν μ 보μ κ²°κ³Όλ°μ΄ν°λ₯Ό ν΄λΌμ΄μΈνΈμκ² λλ €μ€λ€
μνμ½λ
: μμ²μ€μ 무μμ΄ μΌμ΄λ¬λμ§ μ€λͺ
νλ μΈμ리 μ«μ, κ°μ½λμ 첫λ²μ§Έ μ리μλ μνμ μΌλ°μ μΈ λΆλ₯(μ±κ³΅, μλ¬ λ±)λ₯Ό λνλΈλ€.
λνμ μΈ μνμ½λ: 200(OK), 401(Unauthorized), 404(Not Found)
μ¬μ ꡬμ
: μ«μλ‘λ μνμ½λλ₯Ό μ¬λμ΄ μ΄ν΄ν μ μκ² μ€λͺ
ν΄μ£Όλ 짧μ 문ꡬ (λ¨μ§ μ΄ λͺ©μ λΏ)
μμμ€ λ€μμΌλ‘ 0κ°, 1κ° λλ μ¬λ¬κ°μ ν€λλ€, ν΄λμ λͺ©λ‘μ λΉμ€(CRLF)λ‘ λλ ν€λ λͺ©λ‘μ λκ³Ό μν°ν° λ³Έλ¬Έμ μμμ νμνλ€.
HTTP ν€λνλ: μμ² & μλ λ©μμ§μ μΆκ°μ 보λ₯Ό λνλ€. (μ΄λ¦/κ° μμ λͺ©λ‘)
HTTP/1.1 κ³Ό κ°μ λͺλͺ λ²μ μ HTTPλ μμ²μ΄λ μλ΅μ μ΄λ€ νΉμ ν€λκ° ν¬ν¨λμ΄μΌλ§ μ ν¨ν κ²μΌλ‘ κ°μ£Ό
ν€λ λΆλ₯:
- μΌλ° ν€λ: μμ² & μλ΅ μμͺ½ λͺ¨λμ λνλΌ μ μμ
- μμ² ν€λ: μμ²μ λν λΆκ°μ 보 μ 곡
- μλ΅ ν€λ: μλ΅μ λν λΆκ°μ 보 μ 곡
- Entity ν€λ: λ³Έλ¬Έ ν¬κΈ° & μ½ν
μΈ , 리μμ€ κ·Έ μ체λ₯Ό μμ
- νμ₯ ν€λ: λͺ
μΈμ μ μλμ§ μμ μλ‘μ΄ ν€λ
ν€λμ κ°λ¨ν λ¬Έλ²: μ΄λ¦, μ½λ‘ (:), μ νμ μΈ κ³΅λ°±, νλκ°, CRLF(λΉμ€)κ° μμλλ‘ λνλλ€.
HTTP λ²μ 0.9λ HTTP νλ‘ν μ½μ μ΄κΈ°λ²μ μΌλ‘ μ€λλ HTTP μμ², μλ΅ λ³΄λ€ ν¨μ¬ λ¨μνλ€
μμ ν λ©μλλ HTTP μμ²κ²°κ³Ό μλ²μ μ΄λ€ μμ©λ μλ λ©μλλ‘ GETμ΄λ HEADμ κ°μ λ©μλλ₯Ό λ§νλ€.
κ°μ₯ νν μ°μ΄λ λ©μλλ‘ μ£Όλ‘ μλ²μκ² λ¦¬μμ€λ₯Ό λ¬λΌκ³ μμ²
νκΈ° μν΄ μ°μΈλ€
HEADλ©μλλ μ νν GETμ²λΌ νλνμ§λ§, μλ²λ μλ΅μΌλ‘ ν€λλ§
μ λλ €μ€λ€. μ¦, μν°ν° λ³Έλ¬Έμ λ°νλμ§ μλλ€.
HEADλ 리μμ€κ° μλ ν€λμ λν μ 보(ex) λ¬Έμ νμ ) λ±μ΄ κΆκΈν λ μ¬μ©λλ€. λλ μλ΅μ μνμ½λλ₯Ό ν΅ν΄ κ°μ²΄μ μ‘΄μ¬ μ 무λ₯Ό νμΈν μλ μλ€.
GET λ©μλκ° μλ²λ‘λΆν° λ¬Έμλ₯Ό μ½μ΄ λ€μ΄λλ° λ°ν΄ PUT λ©μλλ μλ²μ λ¬Έμλ₯Ό μ΄λ€.
μ΄λ€ λ°ν μμ€ν
μ μ¬μ©μκ° PUTμ μ΄μ©ν΄ μΉνμ΄μ§λ₯Ό λ§λ€κ³ μΉμλ²μ μ§μ κ²μν μ μλλ‘ ν΄μ€λ€.
PUT λ©μλμ μλ―Έλ, μλ²κ° μμ²μ λ³Έλ¬Έμ κ°μ§κ³ μμ² URLμ μ΄λ¦λλ‘ μ λ¬Έμλ₯Ό λ§λ€κ±°λ, μ΄λ―Έ URLμ΄ μ‘΄μ¬νλ€λ©΄ λ³Έλ¬Έμ μ¬μ©ν΄μ κ΅μ²΄νλ κ²μ΄λ€. PUTμ μ½ν
μΈ λ₯Ό λ³κ²½
ν μ μκ² ν΄μ£ΌκΈ° λλ¬Έμ, λ§μ μΉ μλ²κ° PUTμ μννκΈ° μ μ λ‘κ·ΈμΈκ³Ό κ°μ μ¬μ©μ μΈμ¦μ κ±°μΉλ€
POST λ©μλλ μλ²μ μ
λ ₯ λ°μ΄ν°λ₯Ό μ μ‘
νκΈ° μν΄ μ€κ³ λμλ€.
μ£Όλ‘ HTML Formμ μ§μνκΈ° μν΄ μ¬μ©λλ€. μ±μμ§ νΌμ λ΄κΈ΄ λ°μ΄ν°λ μλ²λ‘ μ μ‘λκ³ , μλ²λ μ΄λ₯Ό λͺ¨μμ νμλ‘ νλ κ³³(ex) λ°μ΄ν°λ₯Ό μ²λ¦¬ν μλ² κ²μ΄νΈμ¨μ΄ νλ‘κ·Έλ¨)μ 보λΈλ€.
(POST - μλ²μ λ°μ΄ν°λ₯Ό 보λ΄κΈ° μν΄ μ¬μ©, PUT - μλ²μ μλ 리μμ€(ex) νμΌ)μ λ°μ΄ν°λ₯Ό μ λ ₯νκΈ° μν΄ μ¬μ©)
ν΄λΌμ΄μΈνΈκ° μ΄λ€ μμ²μ ν λ, κ·Έ μμ²μ λ°©νλ²½, νλ½μ, κ²μ΄νΈμ¨μ΄ λ±μ μ ν리μΌμ΄μ
μ ν΅κ³Όν μ μλ€. μ΄λ€μκ²λ μλμ HTTP μμ²μ μμ ν μ μλ κΈ°νκ° μλλ°, TRACE λ©μλλ ν΄λΌμ΄μΈνΈμκ² μμ μ μμ²μ΄ μλ²μ λλ¬νμ λ μ΄λ»κ² 보μ΄κ² λλμ§
μλ €μ€λ€.
OPTIONS λ©μλλ μΉ μλ²μκ² μ¬λ¬κ°μ§ μ’
λ₯μ μ§μ λ²μ
μ λν΄ λ¬Όμ΄λ³Έλ€. μλ²μκ² νΉμ 리μμ€μ λν΄ μ΄λ€ λ©μλκ° μ§μλλμ§ λ¬Όμ΄λ³Ό μ μλ€. (ex) μλ΅ λ©μμ§: 'Allow: GET, PUT, POST')
DELETE λ©μλλ μλ²μκ² μμ² URLλ‘ μ§μ ν 리μμ€λ₯Ό μμ
ν κ²μ μμ²νλ€.
(κ·Έλ¬λ ν΄λΌμ΄μΈνΈλ μμ κ° μνλλ κ²μ 보μ₯νμ§ λͺ»νλ€. μλνλ©΄ HTTP λͺ
μΈλ μλ² ν΄λΌμ΄μΈνΈμκ² μλ¦¬μ§ μκ³ μμ²μ 무μνλ κ²μ νμ©νκΈ° λλ¬Έμ΄λ€.)
HTTP μλ²½κ°μ΄λ