ํต์ ๊ณผ HTTP
HTTP๋ Hypertext Transfer Protocal์ ์ฝ์์ด๋ค. ๋จ์ด๋ฅผ ํ๋ํ๋ ๋ฏ์ด๋ณด์!
- Hypertext : text๋ณด๋ค hyper ํ ๊ฒ(์ด๋ฏธ์ง, ๋น๋์ค ๋ฑ). ๋ฌธ์์ ๋ฌธ์๊ฐ ๋งํฌ๋ก ์ฐ๊ฒฐ๋์ด ์์์ ์๋ฏธ
- Transfer : HTML๋ก ๋ง๋ ์นํ์ด์ง ๋ฌธ์๋ฅผ ๋ณด๋
- Protocol : ์ปดํจํฐ๋ผ๋ฆฌ ์ด๋ป๊ฒ html ํ์ผ์ ์ฃผ๊ณ ๋ฐ์ ์ง์ ๋ํ ์ํต ๋ฐฉ์ ๋๋ ์ฝ์์ ์๋ฏธ
HTTP์ ํน์ง
- Request/Response
์ํต์ ํต์ฌ์ ์์ฒญ๊ณผ ์๋ต. ๋ฉ์ธ์ง ํ์์ผ๋ก ์ ๋ฌ๋๋ค.
- Stateless(์ํ ์์)
http ๊ฐ๋ณ ํต์ ์ ๋ชจ๋ ๋
๋ฆฝ์ด์ด์, ๊ณผ๊ฑฐ์ http ํต์ ์ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์กดํ์ง ์๋๋ค. ์๋ฅผ ๋ค์ด, ์ ์ ๊ฐ ๋ก๊ทธ์ธ์ ํ๊ณ ๋์์์ ๋ณด์ฌ๋ฌ๋ผ๋ ์์ฒญ์ ๋ณด๋ด๋ฉด ์๋ฒ๋ ๋ก๊ทธ์ธ์ ํ๋ค๋ ํต์ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์กดํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ค์ ๋ก๊ทธ์ธ์ ํด๋ฌ๋ผ๊ณ ์๋ตํ๋ค. ๋ฐ๋ผ์ ๋งค ํต์ ๋ง๋ค ์ฌ์ ์ ํ์ํ ๋ชจ๋ ์ ๋ณด๋ฅผ ๋ด์์ ์์ฒญ์ ๋ณด๋ด์ผ ํ๋ค. ์๋๋ ์ฟ ํค๋ฅผ ์ด์ฉํ ์์๋ค.
์ด๋ฏธ์ง ์ถ์ฒ
์์ฒญ๊ณผ ์๋ต ๋ฉ์ธ์ง ๊ตฌ์กฐ
์์ฒญ ๋ฉ์ธ์ง๋ ํฌ๊ฒ Start Line, Headers, Body ์ธ ๊ฐ์ง์ ๊ตฌ์กฐ๋ก ๋๋์ด์ ธ ์๋ค.
Start Line
- Http Method
- Request target : ํด๋น request๊ฐ ์ ์ก๋๋ ๋ชฉํ url
- Http version
Headers
- Host : ์์ฒญ์ ๋ณด๋ด๋ ๋ชฉํ์ ์ฃผ์, ์์ฒญ์ ๋ณด๋ด๋ ์น์ฌ์ดํธ์ ๊ธฐ๋ณธ ์ฃผ์
- User-Agent : ์์ฒญ์ ๋ณด๋ด๋ ํด๋ผ์ด์ธํธ ์ ๋ณด(chrome, safari ๋ฑ)
- Content-Type : ํด๋น ์์ฒญ์ด ๋ณด๋ด๋ ๋ฉ์ธ์งbody์ ํ์
(application, json ๋ฑ)
- Content-Length : body ๋ด์ฉ์ ๊ธธ์ด
- Authorization : ํ์์ ์ธ์ฆ/์ธ๊ฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ก๊ทธ์ธ ํ ํฐ์ authorization์ ๋ฃ์
Body
- ์ค์ ๋ด์ฉ
- ์ฃผ๋ก Body๋ฅผ ์ฌ์ฉํ๋ ๋ฉ์๋๋ POST
- ๋ฉ์๋์ ๋ฐ๋ผ ์์ ์๋ ์์
์๋ต ๋ฉ์ธ์ง๋ ํฌ๊ฒ Status Line, Headers, Body ์ธ ๊ฐ์ง์ ๊ตฌ์กฐ๋ก ๋๋์ด์ ธ ์๋ค.
Status Line
- ์ฒ๋ฆฌ ์ํ๋ฅผ ์๋ ค์ค
- HTTP Version : ์์ฒญ๊ณผ ๋์ผ
- Status Code : ์๋ต ๋ฉ์ธ์ง์ ์ํ์ฝ๋(200, 201 ๋ฑ)
- Status Text : ์ํ๋ฅผ ๊ฐ๋ตํ๊ฒ ์ค๋ช
ํ๋ ํ
์คํธ(OK, CREATED ๋ฑ)
Headers
- ์์ฒญ์ ํค๋์ ๋์ผํจ
- ์๋ต์์๋ง ์ฌ์ฉ๋๋ ํค๋ ์ ๋ณด๋ค๋ ์์(User-Agent ๋์ Server ํค๋๊ฐ ์ฌ์ฉ๋จ)
Body
- ์์ฒญ์ ๋ฐ๋์ ๋์ผ
- ์์ฒญ์ ๋ฉ์๋์ ๋ฐ๋ผ Body๊ฐ ํญ์ ์กด์ฌํ์ง ์๋ฏ ์๋ต์์๋ ์์ ์๋ ์๋ค.
- ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ body ๋ฐ์ดํฐ ํ์
์ JSON(Javascript Object Notation)
์์ฒญ method
์๋ method๋ ํ๋ก ํธ ์
์ฅ์์์ ์๋๊ฐ ๋ด๊ฒจ ์๋ค.
- GET : ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ค๊ธฐ๋ง ํ ๋ ์ฌ์ฉ, ์นํ์ด์ง์ ์ ์ํด์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ฌ ๋ ์ฌ์ฉ
- POST : ๋ฐ์ดํฐ๋ฅผ ์์ฑ/์์ ํ ๋ ์ฌ์ฉ, Body์ ๋ด๋ ๋ด์ฉ์ด ํต์ฌ
- DELETE : ์๋ฒ์ ์ ์ฅ๋ ํน์ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ ๋ ์ฌ์ฉ
์๋ต status codes
์ํ์ฝ๋๋ 3์๋ฆฌ๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ ์ฒซ๋ฒ์งธ ์๋ฆฌ๋ 1์์ 5๊น์ง ์ ๊ณต๋๋ค.
- 1xx(์ ๋ณด) :ย ์์ฒญ์ ๋ฐ์์ผ๋ฉฐ ํ๋ก์ธ์ค๋ฅผ ๊ณ์ ์งํ
- 2xx(์ฑ๊ณต) :ย ์์ฒญ์ ์ฑ๊ณต์ ์ผ๋ก ๋ฐ์์ผ๋ฉฐ ์ธ์ํ๊ณ ์์ฉ
- 3xx(๋ฆฌ๋ค์ด๋ ์
) :ย ์์ฒญ ์๋ฃ๋ฅผ ์ํด ์ถ๊ฐ ์์
์กฐ์น๊ฐ ํ์
- 4xx(ํด๋ผ์ด์ธํธ ์ค๋ฅ) :ย ์์ฒญ์ ๋ฌธ๋ฒ์ด ์๋ชป๋์๊ฑฐ๋ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์์
- 5xx(์๋ฒ ์ค๋ฅ) :ย ์๋ฒ๊ฐ ๋ช
๋ฐฑํ ์ ํจํ ์์ฒญ์ ๋ํ ์ถฉ์กฑ์ ์คํจ
sucess
error
- 400 : Bad request, ํด๋น ์์ฒญ์ด ์๋ชป๋์์ ๋, ์ฃผ๋ก ์์ฒญ์ body์ ๋ณด๋ด๋ ๋ด์ฉ์ด ์๋ชป๋์์ ๋
- 401 : Unauthorized, ๋จผ์ ๋ก๊ทธ์ธ์ ํ๊ฑฐ๋ ํ์๊ฐ์
ํด์ฃผ์ธ์
- 403 : Forbidden, ์ ์ ๊ฐ ํด๋น ์์ฒญ์ ๋ํ ๊ถํ์ด ์์
- 404 : Not found
server error
์์ฃผ์์ฃผ ๊ฐ๋ฐ์ ๋๊ตฌ์ network์ฐฝ์ ํ์ธํด๋ณด์.
์ ๋ค๋น๋... ๋๋ฐ HTTP ๊ณต๋ถ ์ด์ฌํ ํ๊ณ ์์ผ์๋ค์ ํ์ดํ !