[HTTP] HTTP๋?
HTTP
HTTP๋ HyperText Transfer Protocol์ ์ฝ์์ด๋ค.
HyperText
- HyperText ํ์ดํผ๋งํฌ์ ๊ฐ์ ์ฐธ์กฐ๋ฅผ ๊ฑธ์ด ๋ค๋ฅธ ๋ฌธ์๋ก ์ด๋์ ํ๊ฒ ๋์์ฃผ๋ ํ ์คํธ๋ฅผ ์๋ฏธํ๋ค.
Transfer
- "์ฎ๊ธฐ๋ค" ๋ผ๋ ๋ป์ ๊ฐ์ง๊ณ ์์.
Protocol
- "๊ท์ฝ" ์ด๋ผ๋ ๋ป์ ๊ฐ์ง๊ณ ์์.
์ฆ, HyperText๋ฅผ ์ฎ๊ธฐ๊ฒ ๋์์ฃผ๋ ๊ท์ฝ์ ์๋ฏธํ๋ค.
์ฝ๊ฒ ๋งํด, ์น์์ ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ์ HyperText ๊ธฐ๋ฅ์ด ๋ค์ด๊ฐ์๋ ๋ฌธ์๋ค์ ์์ฒญ๊ณผ ์๋ต์ ํตํด ์ ๊ณต์ ํด์ฃผ๋ ๋ฐฉ๋ฒ์ ๊ท์ฝ์ ํด๋๊ณ ํด๋น ๊ท์ฝ ํ์์์ ์ ๊ณต์ ํด์ฃผ๋ ๊ฒ์ ์๋ฏธํ๋ค.
Protocol(๊ท์ฝ)์ ์กด์ฌ ์ด์
HTTP์ ๊ฐ์ด ํต์ ํ๋กํ ์ฝ์ด ์๋ค๋ฉด, ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ๋๋ฌด ๋ค์ํ ํต์ ๋ฐฉ๋ฒ์ด ๋ง๋ค์ด์ง ์ ์๊ธฐ ๋๋ฌธ์ ํ๋์ ๋ฐฉ๋ฒ์ผ๋ก ํต์ผํ์๋ ๊ฐ๋ ์ผ๋ก ๋ง๋ค์ด์ง ํต์ ๊ท์ฝ์ด๋ค.
HTTP ํต์ ํ๋กํ ์ฝ ๊ท์ฝ
1. ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ๊ตฌ์กฐ
์ํ๋ ๋ฌธ์๋ฅผ ์์ฒญ์ ํ๋ ๊ณณ์ ํด๋ผ์ด์ธํธ, ์์ฒญ์ ๋ฐ์์ ๋ฌธ์๋ฅผ ์ ๊ณตํด์ฃผ๋ ๊ณณ์ ์๋ฒ๋ก ๋๋๋ค๋ ์ผ๋ฐ์ ์ธ ์น ๋ธ๋ผ์ฐ์ ์ ํํ๋ฅผ ์ ์ํ ๊ตฌ์กฐ๋ฅผ ๊ท์ฝ์ผ๋ก์จ ์ ํด๋๋๋ค.
2. ๋ฌด์ํ ํ๋กํ ์ฝ
HTTP๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ์ ์์ฒญ๊ณผ ์๋ต ๊ณผ์ ์์ ์์ฒญ ํ ์๋ต์ด ๊ฐ๋ฉด ๋ฐ๋ก ์ฐ๊ฒฐ์ ๋๋ ๋ฌด์ํ ํ๋กํ ์ฝ ์ง์
3. HTTP๋ฉ์์ง & Request & Response
์์ ๋งํ ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ์ ๊ตฌ์กฐ์์ ์์ฒญ์ธ Request ์๋ต์ธ Response์ ๋ํ ๊ตฌ์กฐ๋ฅผ HTTP ๋ฉ์์ง๋ก์จ ํต์ ์ ํ๊ฒ ๋๋ค. HTTP ๋ฉ์์ง๋ ์์ฒญ์ ๋ํ ์ ๋ณด๋ฅผ ์๋ฒ์ ๊ฐ์ด ๋๊ธฐ๊ฒ ๋๋ค. ์ด๋ ๋ค์ด๊ฐ๋ ์ ๋ณด๋ก๋ URL, ํค๋, ์์ฒญ ๋ณธ๋ฌธ ๋ฑ์ ํฌํจํ์ฌ ์๋ฒ์ ์ฃผ๊ฒ ๋๊ณ ์๋ฒ ๋ํ, HTTP ๋ฉ์์ง๋ฅผ ๋ง๋ค์ด์ ์๋ต์ ํ๊ฒ ๋๋๋ฐ ์ด๋ ๋ค์ด๊ฐ๋ ์ ๋ณด๋ ์ํ ์ฝ๋, ํค๋, ๋ณธ๋ฌธ ๋ฑ์ ํฌํจํ์ฌ Response๋ฅผ ํ๊ฒ ๋๋ค.
4. HTTP ๋ฉ์๋
๋ํ์ ์ผ๋ก๋ GET, POST, PUT, DELETE, PATCH ์ด๋ฌํ ๋ฉ์๋๋ฅผ ์์ฒญ์ ๋ณด๋ผ ๋ HTTP ๋ฉ์์ง์ ๊ฐ์ด ๋ด์์ ๋ณด๋ด๊ฒ ๋๋ค. ํด๋น ๋ฉ์๋๋ค์ ์๋ฏธ๋ ๊ฐ๊ฐ
- GET: ์๋ฒ์์ ๋ฆฌ์์ค๋ฅผ ์์ฒญํ๋ ๋ฉ์๋. ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ์ง ์์.
- POST: ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ์ฌ ๋ฆฌ์์ค๋ฅผ ์์ฑํ๊ฑฐ๋ ์์ ํ๋ ๋ฉ์๋.
- PUT: ๋ฆฌ์์ค๋ฅผ ์์ฑํ๊ฑฐ๋ ์์ ํ๋ ๋ฉ์๋.
- DELETE: ์๋ฒ์์ ๋ฆฌ์์ค๋ฅผ ์ญ์ ํ๋ ๋ฉ์๋.
- HEAD: GET๊ณผ ๋น์ทํ์ง๋ง, ์๋ต ๋ณธ๋ฌธ ์์ด ํค๋๋ง ๋ฐํํ๋ ๋ฉ์๋.
- OPTIONS: ์๋ฒ๊ฐ ์ง์ํ๋ HTTP ๋ฉ์๋๋ฅผ ํ์ธํ๋ ๋ฉ์๋.
- PATCH: ๋ฆฌ์์ค์ ์ผ๋ถ๋ฅผ ์์ ํ๋ ๋ฉ์๋.
์ด๋ฌํ ์๋ฏธ๋ฅผ ๋๊ฒ ๋๋ฉฐ, ์ผ๋ฐ์ ์ผ๋ก ์ด๋ฌํ ๋ฐฉ์์ ํ ๋๋ก ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๋ ๊ฒ์ API ํธ์ถ์ด๋ผ๊ณ ํ๋ฉฐ, ์์ ๋ฐฉ๋ฒ๋ค์ ๋ค ์งํค๊ฒ ๋๋ฉด RESTfulํ API๋ผ๊ณ ๋ถ๋ฅด๊ฒ ๋๋ค.
5. ์ํ ์ฝ๋
Response๊ณผ์ ์์๋ ํด๋น ๋ฐ์ดํฐ์ ๋ํ ์ฒ๋ฆฌ๊ฐ ์ด๋ป๊ฒ ๋์๋๋์ ๋ฐ๋ผ์ ์ํ์ฝ๋๋ฅผ ๋ณด๋ด์ฃผ๊ฒ ๋๊ณ , ์ํ์ฝ๋์ ๋ฐ๋ผ์ ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญ๊ณผ ์๋ต์ ๋ํ ์ํ๋ฅผ ํ์ธํ ์ ์๊ฒ ๋๋ค.
* ๋ํ์ ์ํ ์ฝ๋
- 1xx (์ ๋ณด ์๋ต): ์์ฒญ์ ์ฒ๋ฆฌ ์ค์ธ ์ํ. ์: 100 Continue.
- 2xx (์ฑ๊ณต ์๋ต): ์์ฒญ์ด ์ ์์ ์ผ๋ก ์ฒ๋ฆฌ๋ ์ํ. ์: 200 OK.
- 3xx (๋ฆฌ๋ค์ด๋ ์ ): ์์ฒญ์ ๋ค๋ฅธ ์์น๋ก ๋ฆฌ๋ค์ด๋ ์ ํด์ผ ํ๋ ์ํ. ์: 301 Moved Permanently.
- 4xx (ํด๋ผ์ด์ธํธ ์ค๋ฅ): ํด๋ผ์ด์ธํธ ์์ฒญ์ ์ค๋ฅ๊ฐ ์๋ ์ํ. ์: 404 Not Found.
- 5xx (์๋ฒ ์ค๋ฅ): ์๋ฒ์์ ์ฒ๋ฆฌ ์ค ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ํ. ์: 500 Internal Server Error.
6. ํค๋
- HTTP ๋ฉ์์ง์ ์ ๋ณด๋ฅผ ๋๊ธธ ๋ ์ฆ, ์์ฒญ๊ณผ ์๋ต์ ์ถ๊ฐ์ ์ธ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ๋ ์ฌ์ฉ์ด ๋๋ค.
- ๋ฉ์์ง์ ํฌํจ์ด ๋์ด์ ์์ฒญ๊ณผ ์๋ต์ด ์ ๋ฌ์ด ๋๊ฒ ๋๋ค.
์์๋ก๋
Content-Type : ์๋ต ๋ณธ๋ฌธ์ ์ฝํ ์ธ ์ ํ
Authorization : ์ธ์ฆ ์ ๋ณด
User-Agent : ํด๋ผ์ด์ธํธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณด
7. URL
HTTP ์์ฒญ์์ ๋ฆฌ์์ค๋ฅผ ์ฐพ๊ธฐ ์ํ ์ฃผ์์ด๋ค. URL์ ํ๋กํ ์ฝ, ๋๋ฉ์ธ, ๊ฒฝ๋ก, ์ฟผ๋ฆฌ ๋ฌธ์์ด ๋ฑ์ผ๋ก ๊ตฌ์ฑ์ด ๋๋ค.
์์๋ก๋
[http://www.example.com/hello?search=query]
http : ํ๋กํ ์ฝ
[www.example.com] : ๋๋ฉ์ธ
/hello : ๋ฆฌ์์ค ๊ฒฝ๋ก
?search=query : ์ฟผ๋ฆฌ ๋ฌธ์์ด
๊ฒฐ๋ก
์ด๋ฌํ ์ ๋ณด๋ค์ ํต์ ๊ท์ฝ์ผ๋ก์จ ์ ํด๋์๊ณ , ์น์์๋ ์ด๋ฌํ ๋ฐฉ๋ฒ์ ์ด์ฉํด์ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๊ฒ ๋๋ค. ๊ฐ์ฅ ํต์ฌ์ ์ธ HTTP๋ ํต์ ํ๋กํ ์ฝ์ด๋ผ๋ ์ ๊ทธ๋ฆฌ๊ณ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๋ ๊ฐ์ง๋ฅผ ๋๋์ด์ ๋ฌธ์๋ฅผ ์์ฒญ๊ณผ ์๋ต์ผ๋ก ๋ฐ๋๋ค๋ ๊ตฌ์กฐ๊ฐ ๋งค์ฐ ํต์ฌ์ ์ธ ๋ด์ฉ์ด๋ค.