HTTP์ HTTP์ ๋ฉ์ธ์ง ๊ตฌ์กฐ
HTTP(HyperText Transfer Protocol)
์ธํฐ๋ท์์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ๋ ์ฌ์ฉ๋๋ ํ๋กํ ์ฝ์ด๋ค.
HTML, Text ์ธ์๋ ์ด๋ฏธ์ง๋ ์ฌ๋ฌ ํ์ผ, JSON ๋ฑ ๊ฑฐ์ ๋ชจ๋ ํํ์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ ์ ์๋ค.
HTTP ํน์ง
HTTP์ ํน์ง์ผ๋ก๋ ํฌ๊ฒ ๋ช ๊ฐ์ง๋ฅผ ๋ค ์ ์๋ค.
ํด๋ผ์ด์ธํธ - ์๋ฒ ๊ตฌ์กฐ
์์ฒญ๊ณผ ์๋ต์ผ๋ก ๋๋์ด์ ํด๋ผ์ด์ธํธ๋ ์๋ฒ๋ก ์์ฒญ์, ์๋ฒ๋ ํด๋ผ์ด์ธํธ๋ก ์์ฒญ์ ๋ํ ๊ฒฐ๊ณผ๋ก ์๋ตํ๋ค.
ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ๊ฐ๊ฐ ๋ ๋ฆฝ๋์ด ์์ด ๋ ์์ ์ผ๋ก ๋น ๋ฅด๊ฒ ๋ฐ์ ํด ์๋ค.
๋ฌด์ํ ํ๋กํ ์ฝ(Stateless)
์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ๋ณด์กดํ์ง ์๊ธฐ ๋๋ฌธ์ ์๋ฒ์ ํ์ฅ์ฑ์ด ๋๋ค๋ ์ฅ์ ์ด ์๋ค.
ํ์ง๋ง ํด๋ผ์ด์ธํธ๊ฐ ์ถ๊ฐ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํด์ผ ํ๋ ๋จ์ ์ด ์๋ค.
๐ค Stateful๊ณผ Stateless์ ์ฐจ์ด?
๋์ ์ฐจ์ด๋ ์ํ๊ฐ ์ ์ง๋๋๋์ ์๋ค.
Stateful์ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ฐ๋ผ์ ํญ์ ๊ฐ์ ์๋ฒ๊ฐ ์ ์ง๋์ด์ผ ํ๋ค.
์ค๊ฐ์ ์๋ฒ ์ฅ์ ๊ฐ ๋ฐ์ํ๋ค๋ฉด ์ฒ์๋ถํฐ ์์ฒญ์ด ๋ค์ ๋ค์ด๊ฐ๊ธฐ ๋๋ฌธ์, ์๋ฒ ์ฆ์ค์ด๋ ๊ต์ฒด๊ฐ ์ด๋ ต๋ค.
Stateless๋ ์๋ฒ์์ ์ํ๋ฅผ ๋ณด๊ดํ์ง ์๊ธฐ ๋๋ฌธ์ ์ฅ์ ๊ฐ ๋ฐ์ํ๋๋ผ๋ ์๋ฌด ์๋ฒ๋ ํธ์ถํ ์ ์๋ค.
๊ฐ์์ค๋ฝ๊ฒ ์ด๋ฒคํธ ํ์ด์ง์ฒ๋ผ ํด๋ผ์ด์ธํธ ์์ฒญ์ด ์์ฒญ๋๊ฒ ์ฆ๊ฐํด๋ ์๋ฒ๋ฅผ ๋๊ฑฐ ํฌ์ ํ ์ ์๋ ๊ฒ!
๊ทธ๋ ๋ค๊ณ ํด์ ๋ฌด์กฐ๊ฑด Stateless๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ๊ฒ์ ์๋๋ค! ์ต๋ํ ๋ฌด์ค๊ณ๋ก ํ๋ ๊ฒ์ด ์ข์ง๋ง,
๋ก๊ทธ์ธ ๊ฐ์ ๊ธฐ๋ฅ์ ์ํ์ ์ง๊ฐ ํ์ํ๊ธฐ ๋๋ฌธ.
์ํ ์ ์ง๋ ์ต์ํ๋ง ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
๋น์ฐ๊ฒฐ์ฑ(Connectionless)
HTTP๋ ์์ฒญ์ ํ ํ ์๋ต์ ๋ฐ์ผ๋ฉด ๋ฐ๋ก ์ฐ๊ฒฐ์ ์ข
๋ฃํ๋ค.
๋ถํ์ํ ์ฐ๊ฒฐ์ ํ์ง ์์ ์๋ฒ ์์์ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค๋ ํน์ง์ด ์๋ค.
HTTP ๋ฉ์์ง ๊ตฌ์กฐ
HTTP์ ๋ฉ์ธ์ง ๊ตฌ์กฐ๋ ์๋์ ๊ฐ์ด ๊ตฌ์ฑ๋์ด ์๋ค.
์์ฒญ๋ฉ์์ง์ ๊ฒฝ์ฐ์๋ body๊ฐ ๋ค์ด๊ฐ ์๋, ๋ค์ด๊ฐ์ง ์์ ์๋ ์๋ค.
์์์ค
์์ฒญ์ผ ๊ฒฝ์ฐ์๋ request-line, ์๋ต์ผ ๊ฒฝ์ฐ์๋ status-line์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
์์ฒญ
์์ฒญ์ผ ๊ฒฝ์ฐ์๋ ๋ณดํต ์ด๋ฐ ์์๋ค์ด ๋ค์ด๊ฐ๋ค.
- HTTP ๋ฉ์๋
- ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์์ฒญํ๋ ๋์์ด๋ค. ์ด ๋ฉ์๋๋ฅผ ๋ฐํ์ผ๋ก ์๋ฒ๊ฐ ์์ ์ ์ํํ๋ค.
- ์์ฒญ URL
- ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์์ฒญํ๋ ๋ฆฌ์์ค ๊ฒฝ๋ก๋ก, ์์ฒญ ๋์์ด๋ค.
- HTTP ๋ฒ์
- ํด๋ผ์ด์ธํธ๊ฐ ์ฌ์ฉํ๋ HTTP์ ๋ฒ์ ์ด๋ค.
์๋ต
์๋ต์ผ ๊ฒฝ์ฐ์๋ ์๋ ์์๋ค์ด ๋ค์ด๊ฐ๋ค.
- HTTP ๋ฒ์
- HTTP ์ํ ์ฝ๋
- ์์ฒญ์ ๋ํ ์ฑ๊ณต, ์คํจ๋ฅผ ์ฝ๋๋ก ๋ํ๋ธ๋ค. 200(์ฑ๊ณต), 400(ํด๋ผ์ด์ธํธ ์์ฒญ ์ค๋ฅ), 500(์๋ฒ ์ค๋ฅ)
- ์ํ ํ
์คํธ
- ์ํ ์ฝ๋์ ๋ํด ์ฌ๋์ด ์ดํดํ ์ ์๋ ์งง์ ๊ธ
HTTP ํค๋
์์ฒญ
์์ฒญ ํค๋์๋ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์ ์กํ๋ ์์ฒญ์ ๋ํ ๋ถ๊ฐ์ ๋ณด(๋ฉํ์ ๋ณด)๊ฐ ๋ค์ด๊ฐ๋ค.
๋ฉ์์ง ๋ฐ๋์ ํฌ๊ธฐ, ์ธ์ฆ ์ ๋ณด, ์บ์ ๊ด๋ฆฌ ์ ๋ณด ๋ฑ๋ฑ..
์๋ต
์๋ต ํค๋๋ ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์๊ฒ ๋ฐํํ๋ ์๋ต์ ๋ํ ๋ถ๊ฐ์ ๋ณด๊ฐ ๋ค์ด๊ฐ๋ค.
General ํค๋, Response ํค๋, Entity ํค๋ ๋ฑ ๋ช ๊ฐ์ง ์ข ๋ฅ์ ํค๋๊ฐ ์๋ค. (์ถ๊ฐ ์ ๋ฆฌ ์์ )
HTTP ๋ฉ์์ง ๋ฐ๋
์์ฒญ
๋ชจ๋ ์์ฒญ์ ๋ณธ๋ฌธ์ด ๋ค์ด๊ฐ์ง ์์ง๋ง, POST, PATCH, PUT ๋ฑ์ ์์ฒญ์ผ ๊ฒฝ์ฐ์ ๋ฐ๋์ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ๋ก ์ ์กํ๋ ์ค์ ๋ฐ์ดํฐ๊ฐ ๋ด๊ฒจ์๋ค.
GET, DELETE ๋ฑ ๋ฆฌ์์ค๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒฝ์ฐ์๋ ๋ณธ๋ฌธ์ด ๋ค์ด๊ฐ์ง ์๋๋ค.
์๋ต
์๋ต์ ๋ฐ๋์๋ ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์๊ฒ ๋ฐํํ๋ ์ค์ ๋ฐ์ดํฐ๊ฐ ๋ด๊ฒจ์๋ค.
์ถ์ฒ
๋ชจ๋ ๊ฐ๋ฐ์๋ฅผ ์ํ HTTP ์น ๊ธฐ๋ณธ ์ง์