HTTP Messages
๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ ์ฌ์ด์์๋ฐ์ดํฐ๊ฐ ๊ตํ๋๋ ๋ฐฉ์
์ด๋ค.
W3 ์์์ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ ํ๋กํ ์ฝ์ด๋ค. ์ฃผ๋ก HTML ๋ฌธ์๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ฐ์ ์ฐ์ธ๋ค.
์์ฒญ(Requests)
: ํด๋ผ์ด์ธํธ -> ์๋ฒ
์๊ฒ ๋ณด๋ด๋ ๋ฉ์์ง ์๋ต(Responses)
: ์๋ฒ-> ํด๋ผ์ด์ธํธ
์๊ฒ ๋ณด๋ด๋ ๋ฉ์์ง๋ ๊ฐ์ง ๋ฐฉ์์ด ์๋ค.
HTTP
๋ ์ํ๋ฅผ ๊ฐ์ง ์๋๋ค.
HTTP๊ฐ ์๋ก ํต์ ์ ํ๋ ๊ณผ์ ์์ ํด๋ผ์ด์ธํธ, ์๋ฒ์ ์ํ๋ฅผ ํ์ธํ์ง ์๋๋ค. HTTP๋ ํต์ ๊ท์ฝ์ผ ๋ฟ์ด๋ฏ๋ก ์ํ๋ฅผ ์ ์ฅํ์ง ์๊ธฐ ๋๋ฌธ์ด๋ค.
๋ฐ๋ผ์ ์ํ๋ฅผ ์ ์ฅํ๊ณ ์ถ๋ค๋ฉด ์ฟ ํค-์ธ์
, API ๋ฑ์ ๋ฐฉ๋ฒ์ ์ด์ฉํด์ผ ํ๋ค.
HTTP ๋ฉ์์ง์ ๊ตฌ์กฐ๋ฅผ ์ดํด๋ณด์.
์์ฒญ(Requests)๊ณผ ์๋ต(Responses)์ ์ ์ฌํ ๊ตฌ์กฐ๋ฅผ ๊ฐ๋๋ค.
start line
-์์ฒญ/์๋ต
์ํ๋ฅผ ๋ํ๋ธ๋ค.HTTP headers
-์์ฒญ์ ์ง์
ํ๊ฑฐ๋, ๋ฉ์์ง์ ํฌํจ๋๋ณธ๋ฌธ์ ์ค๋ช
ํ๋ ํค๋์ ์งํฉempty line
- ๊ตฌ๋ถ ์body
- ๋ฐ์ดํฐ๋ ์๋ต๊ณผ ๊ด๋ จํ๋ฐ์ดํฐ
ํน์๋ฌธ์
๋ฅผ ํฌํจ
์๋ฒ
์๊ฒ ๋ณด๋ด๋ ๋ฉ์์ง์ด๋ค. HTTP method
:GET
, PUT
, POST
๋ฑ)์ด๋ ๋ฐฉ์(HEAD
or OPTIONS
)์ ์ค๋ช
ํ๋ค. ์์ฒญ ์ปจํ
์คํธ
:HTTP ๋ฒ์
:์์ฒญ ์ปจํ ์คํธ - ๋ค์ํ ์์ฒญ ํ์
origin
ํ์ :
'?'์ ์ฟผ๋ฆฌ ๋ฌธ์์ด์ด ๋ถ๋ ์ ๋ ๊ฒฝ๋ก์ ๋๋ค. GET, POST, HEAD, OPTIONS ๋ฑ์ method์ ํจ๊ป ์ฌ์ฉํฉ๋๋ค.
POST / HTTP 1.1
GET /background.png HTTP/1.0
HEAD /test.html?query=alibaba HTTP/1.1
OPTIONS /anypage.html HTTP/1.0
absolute
ํ์ :
์์ ํ URL ํ์์ผ๋ก, ํ๋ก์์ ์ฐ๊ฒฐํ๋ ๊ฒฝ์ฐ ๋๋ถ๋ถ GET method์ ํจ๊ป ์ฌ์ฉํฉ๋๋ค.
GET http://developer.mozilla.org/en-US/docs/Web/HTTP/Messages HTTP/1.1
authority
ํ์ :
๋๋ฉ์ธ ์ด๋ฆ๊ณผ ํฌํธ ๋ฒํธ๋ก ์ด๋ฃจ์ด์ง URL์ ์ผ๋ถ๋ถ ์ ๋๋ค. HTTP ํฐ๋์ ๊ตฌ์ถํ๋ ๊ฒฝ์ฐ, CONNECT์ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค.
CONNECT developer.mozilla.org:80 HTTP/1.1
asterisk
ํ์ :
OPTIONS ์ ํจ๊ป ๋ณํ() ํ๋๋ก ์๋ฒ ์ ์ฒด๋ฅผ ํํํฉ๋๋ค.
OPTIONS HTTP/1.1
[ํค๋ ์ด๋ฆ : ๊ฐ]
์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
ํฌ๊ฒ ์ธ ๊ทธ๋ฃน์ผ๋ก ๋๋ ์ ์๋๋ฐ,
Request headers
: fetch๋ฅผ ํตํด ๊ฐ์ ธ์ฌ ๋ฆฌ์์ค๋ ํด๋ผ์ด์ธํธ์ ์์ธํ ์ ๋ณด
๋ฅผ ๋ด๊ณ ์๋ค. General headers
: ๋ฉ์์ง ์ ์ฒด์ ์ ์ฉ๋๋ ํค๋๋ก, ์ ์ก ๋ฐ์ดํฐ์ ๊ด๋ จ์ด ์๋ค. Representation headers
: body์ ๋ด๊ธด ๋ฆฌ์์ค์ ์ ๋ณด
(์ฝํ
์ธ ๊ธธ์ด, MIME ํ์
๋ฑ)๋ฅผ ํฌํจํ๋ค. -๋ชจ๋ ์์ฒญ์ body๊ฐ ํ์ํ ๊ฒ์ ์๋๋ค.
GET, HEAD, DELETE, OPTIONS์ฒ๋ผ ์๋ฒ์ ๋ฆฌ์์ค๋ฅผ ์์ฒญํ๋ ๊ฒฝ์ฐ์๋ ๋ณธ๋ฌธ์ด ํ์ํ์ง ์๋ค.
POST
๋ PUT
๊ณผ ๊ฐ์ ์ผ๋ถ ์์ฒญ์ ๋ฐ์ดํฐ๋ฅผ ์
๋ฐ์ดํธ
ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
-body๋ ๋ค์๊ณผ ๊ฐ์ด ๋ ์ข ๋ฅ๋ก ๋๋ ์ ์๋ค.
Single-resource bodies(๋จ์ผ-๋ฆฌ์์ค ๋ณธ๋ฌธ) :
ํค๋ ๋ ๊ฐ(Content-Type๊ณผ Content-Length)๋ก ์ ์๋ ๋จ์ผ ํ์ผ๋ก ๊ตฌ์ฑ
Multiple-resource bodies(๋ค์ค-๋ฆฌ์์ค ๋ณธ๋ฌธ) :
์ฌ๋ฌ ํํธ๋ก ๊ตฌ์ฑ๋ ๋ณธ๋ฌธ์์๋ ๊ฐ ํํธ๋ง๋ค ๋ค๋ฅธ ์ ๋ณด๋ฅผ ์ง๋๋ฉฐ ๋ณดํต HTML form๊ณผ ๊ด๋ จ์ด ์๋ค.
-์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ
์๊ฒ ๋ณด๋ด๋ ๋ฉ์์ง์ด๋ค.
ํ์ฌ ํ๋กํ ์ฝ์ ๋ฒ์ (HTTP/1.1)
์ํ ์ฝ๋
- ์์ฒญ์ ๊ฒฐ๊ณผ๋ฅผ ๋ํ๋
๋๋ค. (ex. 200, 302, 404 ๋ฑ)์ํ ํ
์คํธ
- ์ํ ์ฝ๋์ ๋ํ ์ค๋ช
ex . HTTP/1.1 404 Not Found
์์ฒญ ๋ฉ์์ง์ ๋ง์ฐฌ๊ฐ์ง๋ก [ํค๋ ์ด๋ฆ : ๊ฐ]
์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
Response headers
:์๋ต์ ๋ํ ๋ถ๊ฐ์ ์ธ ์ ๋ณด
๋ฅผ ๊ฐ๋ ํค๋๋ก, Vary, Accept-Ranges์ ๊ฐ์ด ์ํ ์ค์ ๋ฃ๊ธฐ์๋ ๊ณต๊ฐ์ด ๋ถ์กฑํ๋ ์ถ๊ฐ ์ ๋ณด๋ฅผ ์ ๊ณตGeneral headers
:Representation headers
:body์ ๋ด๊ธด ๋ฆฌ์์ค์ ์ ๋ณด(์ฝํ
์ธ ๊ธธ์ด, MIME ํ์
๋ฑ)๋ฅผ ํฌํจ
ํ๋ ํค๋-๋ชจ๋ ์์ฒญ์ body๊ฐ ํ์ํ ๊ฒ์ ์๋๋ค.
-201
, 204
์ ๊ฐ์ ์ํ์ฝ๋
๋ฅผ ๊ฐ๋ ์๋ต์๋ ๋ณธ๋ฌธ์ด ํ์ํ์ง ์๋ค.
-body๋ ๋ค์๊ณผ ๊ฐ์ด ๋ ์ข ๋ฅ๋ก ๋๋ ์ ์๋ค.
Single-resource bodies(๋จ์ผ-๋ฆฌ์์ค ๋ณธ๋ฌธ) :
ํค๋ ๋ ๊ฐ(Content-Type๊ณผ Content-Length)๋ก ์ ์๋ ๋จ์ผ ํ์ผ๋ก ๊ตฌ์ฑ
Multiple-resource bodies(๋ค์ค-๋ฆฌ์์ค ๋ณธ๋ฌธ) :
์ฌ๋ฌ ํํธ๋ก ๊ตฌ์ฑ๋ ๋ณธ๋ฌธ์์๋ ๊ฐ ํํธ๋ง๋ค ๋ค๋ฅธ ์ ๋ณด๋ฅผ ์ง๋๋ฉฐ ๋ณดํต HTML form๊ณผ ๊ด๋ จ์ด ์๋ค.