๐ ํ์ต ๋ชฉํ
1.HTTP์ ํน์ง์ธ Stateless๋ฅผ ์ค๋ช
ํ ์ ์๋ค.
2.Request, Response ๊ตฌ์กฐ์ ๋ํด ์ค๋ช
ํ ์ ์๋ค.
3.HTTP request method์ ์ข
๋ฅ๋ฅผ ์๊ณ ์๋ก์ ์ฐจ์ด์ ์ ์ค๋ช
ํ ์ ์๋ค.
4.๋ํ์ ์ธ Status code์ ์ข
๋ฅ๋ฅผ ์ค๋ช
ํ ์ ์๋ค.
(= How do we communicate?)
(= HyperTextTransferProtocol)
hyperText
HTML(Hyper Text Markup Language)
=๋ฌธ์์ ๋ฌธ์๊ฐ ๋งํฌ๋ก ์ฐ๊ฒฐ๋์ด ์๋ค๋ ๋ป.
Transfer
์ ์กํ๋ค = ๋ฌผ๊ฑด์ด๋ ํธ์ง ๋ฐ์๋ฅผ ๋ณด๋ด๋ค
html๋ก ๋ง๋ ์นํ์ด์ง ๋ฌธ์๋ฅผ ๋ณด๋ธ๋ค.
Protocol
์ปดํจํฐ๋ผ๋ฆฌ ์ด๋ป๊ฒ htmlํ์ผ์ ์ฃผ๊ณ ๋ฐ์ ์ง์ ๋ํ ์ํต ๋ฐฉ์ ๋๋ ์ฝ์
์น์์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋ (๋ง์ผ์ปฌ๋ฆฌ์์ ์ฑ์ ๋ชฉ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฐ๊ณ ์ถ์ ๊ฒฝ์ฐ)
ํ๋ก ํธ์๋์ ๋ฐฑ์๋๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์๋ ์ ํด๋์ ๊ท์ฝ!
client : request(์์ฒญ) โ๏ธ server : response(์๋ต)
์ปดํจํฐ๋ ์ธ๊ฐ์ด ์ํตํ๋ฏ์ด ์์ฒญ๊ณผ ์๋ต์ ๋ฉ์ธ์งํ์์ผ๋ก ์ด๋ฃจ์ด์ง๋ค.
State(์ํ) + less(์์)
HTTP ๊ฐ๋ณ ํต์ ์ ๋ชจ๋ ๋ ๋ฆฝ์ด์ด์, ๊ณผ๊ฑฐ์ HTTP ํต์ ์ ๊ฒฐ๊ณผ(์ํ)๋ฅผ ๋ณด์กดํ์ง ์๋๋ค. ๊ทธ๋ ๊ธฐ๋๋ฌธ์ ๋งค ํต์ ๋ง๋ค ํ์ํ ์ ๋ณด๋ฅผ ๋ด์์ ์์ฒญ์ ๋ณด๋ด์ผ ํฉ๋๋ค.
stateful
์์ด์ค๋ผ๋ผ ์ผ๋ง์ ๋๊น? โก๏ธโฌ ๏ธ 4500์์ด์(์์ด์ค๋ผ๋ผ ์ํ ์ ์ฅ)
์๋ฝ 2ํํ ์ถ๊ฐํด์ฃผ์ธ์ โก๏ธโฌ ๏ธ ๋ค ๋ฌด์์ผ๋ก ๊ฒฐ์ ํ์๊ฒ ์ด์?( ์์ด์ค๋ผ๋ผ, ์๋ฝ๋ํํ ์ถ๊ฐ ์ํ ์ ์ฅ)
์นด๋๋ก ๊ฒฐ์ ํ ๊ป์ โก๏ธโฌ ๏ธ ๋ค (์์ด์ค๋ผ๋ผ, ์๋ฝ ๋ํํ, ์นด๋๊ฒฐ์ ์ํ์ ์ฅ)
stateless
์์ด์ค๋ผ๋ผ ๊ฐ๊ฒฉ์? โก๏ธโฌ ๏ธ 4500์์ด์
์๋ฝ 2ํํ ์ถ๊ฐํด์ฃผ์ธ์ โก๏ธโฌ ๏ธ ๋ฌด์์ ์๋ฝ์ ์ถ๊ฐํด์ ๋๋ฆด๊น์?
์นด์นด์คํ์ด๋ก ํ ๊ป์ฌ โก๏ธโฌ ๏ธ ๋ฌด์์ ์นด์นด์คํ์ด๋ก ๊ฒฐ์ ํด๋ค๋ฆด๊น์?
๋งค ํต์ ๋ง๋ค ์์ฒญ์ ๋ณด๋ผ๋ ํ์ํ ์ ๋ณด๋ฅผ ๋ชจ๋๋ค ๋ด์์ ๋ณด๋ด์ค์ผํฉ๋๋ค.
๋ฐ๋ผ์, ๋ง์ผ ์ฌ๋ฌ๋ฒ ํต์ (์๋ต,์์ฒญ)์ ์งํ๊ณผ์ ์์ ์ฐ์๋ ์ฒ๋ฆฌ๊ฐ ํ์ํ ๊ฒฝ์ฐ,์๋ฅผ ๋ค์ด ์จ๋ผ์ธ ์ผํ๋ชฐ์์ ๋ก๊ทธ์ธ ํ ์ฅ๋ฐ๊ตฌ๋ ๊ธฐ๋ฅ์ ์ํด ๋ก๊ทธ์ธ ํ ํฐ ๋๋ ๋ธ๋ผ์ฐ์ ์ ์ฟ ํค, ์ธ์
, ๋ก์ปฌ์คํ ๋ฆฌ์ง ๊ฐ์ ๊ธฐ์ ์ด ํ์์ ์ํด ๋ง๋ค์ด์ง๊ฑธ ์ ์ ์๋ค.
์์ด์ค๋ผ๋ผ ์ผ๋ง์์? โก๏ธโฌ ๏ธ 4500์์ ๋๋ค.
์์ด์ค๋ผ๋ผ ์๋ฝ ๋ํํ ๋ฃ์ด์ ์ฃผ์ธ์. โก๏ธโฌ ๏ธ์์ด์ค๋ผ๋ผ์ ์๋ฝ ๋ํํ, ์ด๋ป๊ฒ ๊ฒฐ์ ํ์๊ฒ ์ต๋๊น?
์์ด์ค๋ผ๋ผ,์๋ฝ ๋ํํ๋ฃ์ด์ ์ฃผ์ธ์,์นด๋๋ก ๊ฒฐ์ ํ ๊ป์ โก๏ธโฌ ๏ธ ์์ด์ค๋ผ๋ผ,์๋ฝ ๋ํํ,์นด๋ ๊ฒฐ์ ์๋ฃ๋์์ต๋๋ค.
start Line : ์ฒซ๋ฒ์งธ ์ค
- HTTP Method : ์์ฒญ์ด ์๋ํ ์ก์
์ ์ ์ ๋ถ๋ถ.GET,POST,DELETE๋ง์ด ์ฌ์ฉ๋จ
- Request target : '๋ด๊ฐ ์ฌ๊ธฐ๋ค ์์ฒญ์ ํ ๊ฒ์ด๋ค'๋ผ๋ ๊ฒ์ ์๋ ค์ค๋ค. ํด๋น request๊ฐ ์ ์ก๋๋ ๋ชฉํ url
- HTTP Version : ๋ง ๊ทธ๋๋ก ์ฌ์ฉ๋๋ HTTP ๋ฒ์ ์ ๋ปํจ. ์ฃผ๋ก 1.1๋ฒ์ ์ด ๋๋ฆฌ ์ฐ์.
์) ํ๋ฏผ์ ์(1.0)->...->ํ์ฌ ์ ํ๋๋ ์ค์๋ง.
POST/login HTTP/1.1
(= ๊ฒ ๋ฉ์๋๋ก ๋ก๊ทธ์ธ ์ด๋ผ๋ ์์ฒญ ํ๊ฒ์ HTTP 1.1 ๋ฒ์ ์ผ๋ก ์์ฒญ ๋ณด๋ด๊ฒ ๋ค.)
header =>meta data : ํด๋น ์์ฒญ์ ํ์ํ ์ถ๊ฐ์ ๋ณด(meta data)๋ค์ ๋ด์๋๋ ๋ถ๋ถ.
{key:value}๋ฐฉ์์ผ๋ก ์ด๋ฃจ์ด์ ธ์๋ค.
Body : ํด๋น ์์ฒญ์ ์ค์ ๋ด์ฉ
๋ณธ๋ฌธ์ ์ค์ด์ ๋ณด๋ธ๋ค.๋ฉ์๋์ ์กด์ฌ์ ๋ฐ๋ผ์ ์์์๋ ์์์๋ ์๋ค. ์ฃผ๋ก POST๋ฅผ ์ฌ์ฉํ๋ค.
status Line : ์๋ต์ ์ํ๋ฅผ ๋ํ๋.
- HTTP version : HTTP ๋ฒ์
- Status Code : ์๋ต ์ํ์ฝ๋
- Status Text : ์๋ต์ ์ํ๋ฅผ ๊ฐ๋ตํ ์ค๋ช
ํ๋ ํ
์คํธ
HTTP/1.1 404 NotFound
HTTP/1.1 200 SUCCESS
header =>meta data : ์๋ต์ ์ถ๊ฐ ์ ๋ณด(๋ฉํ ๋ฐ์ดํฐ)๋ฅผ ๋ด๊ณ ์๋ ๋ถ๋ถ.
{key:value}๋ฐฉ์์ผ๋ก ์ด๋ฃจ์ด์ ธ์๋ค.
Body : ์๋ตํด์ค ๋ฐ์ดํฐ. ์์ฒญ์ ๋ฐ๋ผ ์กด์ฌํ์ง ์์์๋ ์๋ค.
๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ ํ์ ์ JSON์ด๋ค.
์์ฃผ ์ฌ์ฉ๋๋ HTTP ํต์ ๋ฉ์๋ ์ธ๊ฐ์ง.(GET, POST, DELETE)๊ฐ์ง๋ ์๋๋ฅผ ์์๋ณด์.
GET
GET/shop/bag HTTP 1.1
์)์ฅ๋ฐ๊ตฌ๋์ ๋ด์ ๋ชฉ๋ก์ ์กฐํ
HTTP/1.1 200 OK (์ฑ๊ณต!)
์)์๋ต : ์์์ด.์ฑ๊ณต!
POST
POST/shop/bag HTTP1.1
์)์์ฒญ-์์ดํจ๋ ์ฅ๋ฐ๊ตฌ๋์ ๋ด๊ธฐ
HTTP/1.1 201 Created
์)์๋ต-์์ฒญ ์ฑ๊ณตํ๊ณ ์ฅ๋ฐ๊ตฌ๋ ๋ง๋ค์ด์ก๋ค.
DELETE
DELETE/shop/bag HTTP1.1
์)์ฅ๋ฐ๊ตฌ๋์์ ์ ํ์ ์ญ์ ํ๋ค.
HTTP/1.1 204 No Content (์์ฒญ์ฑ๊ณตํ์ผ๋ ๋ด์ฉ์ ์๋ค)
์)์์ฒญ์ ์ฑ๊ณตํ์ผ๋ ๋ด์ฉ(body-content)์ ์๋ค
Success
200 : OK (์ฑ๊ณต!)
201 : Created (์ ์์ฑ๋์๋)
204 : No Content(์ ์์ฑ๋์ง๋ง ๋ฐ๋(content)๊ฐ ์๋ค)
Error
400:Bad Request (์ ์ ๊ฐ ์๋ชป๋ณด๋์๋)
401:Unauthorized (๊ถํ์ด ์๋,๋ ๋๊ตฌ์ธ์ง ๋ชจ๋ฅด๊ฒ ๋๋ฐ? ์ธ์ฆ๋์ง์์!๋ ๋๊ตฌ์ผ?)
403:Forbidden (์ ๊ทผ๊ธ์ง! ๋ ๋๋๊ตฐ์ง ์๋๋ฐ ๋ ๊ถํ ์์ด!!)
404:Not Found (url ์์ด...๋๊ฐ ์ฐพ๋๊ฑฐ ์์ด)
Server Error
500: Internal Server Error (์๋ฒ์์ ์๋ฌ๊ฐ ๋ฌ์ ๊ฒฝ์ฐ)