httpํต์ ์ด ์ด๋ป๊ฒ ๊ตฌ์ฑ๋๊ณ ์ฌ์ฉ๋์ด์ผ ํ๋์ง ์์
Hyper Text Transger Protocol๋ก html๋ฌธ์๋ฅผ ๊ตํํ๊ธฐ ์ํด ๋ง๋ค์ด์ง ํต์ ๊ท์ฝ(protocol)์ด๋ค
์น์์์ ๋คํธ์ํฌ๋ฅผ ํตํด ์๋ฒ๋ผ๋ฆฌ ํต์ ์ ์ด๋ค ํ์ ๋ฐ ๋ฐฉ์์ผ๋ก ํต์ ์ ํ์๊ณ ๊ท์ ํด ๋์ ํต์ ํ์(๊ตฌ์กฐ)์ด๋ค(ํ๋ก ํธ์๋์๋ฒ <-> ํด๋ผ์ด์ธํธ๊ฐ์ ํต์ )(๋ฐฑ์๋์ ํ๋ก ํธ์ค๋ ์๋ฒ๊ฐ์ ํต์ )
ํด๋ผ์ด์ธํธ๊ฐ HTTP request๋ฅผ ์๋ฒ๋ก ๋ณด๋ด๋ฉด ์๋ฒ๋ HTTP reponse๋ฅผ ๋ณด๋ธ๋ค
(๊ฐ๊ฐ์ ์์ฒญ/์๋ต set์ ๋
๋ฆฝ์ ์ด๋ค)
ex) ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญ ํ ์๋ต์ ๋ฐ๊ณ ๋ช ์ด ๋ค ๋ค์ ์์ฒญ์ ๋ณด๋ด๋ ์ ์ ๋ณด๋ธ ์์ฒญ ์๋ต์ ๋ํด ์์ง ๋ชปํ๋ค(์งํ๊ณผ์ ์ด๋ ๋ฐ์ดํฐ ํ์ ์ ์ฟ ํค๋ ์ธ์
๋ฑ์ ์ฌ์ฉํ๊ฒ ๋๋ค)
HTTP request๋ ํฌ๊ฒ 3๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋๋๋ฐ status line, headers, body๋ก ๊ตฌ์ฑ๋๋ค.
headers: ํด๋นrequest์ ๋ํ ์ถ๊ฐ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ๋ถ๋ถ์ด๋ค.(Request message, body length๋ฑ..)
Key:value๊ฐ์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ค(ex, HOST: google.com)
Headers๋ ํฌ๊ฒ 3๋ถ๋ถ(general, request, entity)์ผ๋ก ๊ตฌ์ฑ๋์ด ์๊ณ ์์ฃผ ์ฌ์ฉ๋๋ header์ ๋ณด๋ ์๋์ ๊ฐ๋ค.
Accept: */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Type: application/json
Content-Length: 257
Host: google.com
User-Agent: HTTPie/0.9.3
- Body: ํด๋น request์ ์ค์ ๋ฉ์ธ์ง/๋ด์ฉ.
- Body ๊ฐ ์๋ request๋ ๋ง์๋ฐ Get request๋ค์ ๋๋ถ๋ถ body๊ฐ ์๋ค.
POST /payment-sync HTTP/1.1
Accept: application/json
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Length: 83
Content-Type: application/json
Host: intropython.com
User-Agent: HTTPie/0.9.3
{
"imp_uid": "imp_1234567890",
"merchant_uid": "order_id_8237352",
"status": "paid"
}
OPTIONS :์ฃผ๋ก ์์ฒญ URI์์ ์ฌ์ฉ ํ ์ ์๋ Method๋ฅผ ๋ฐ์์ฌ ๋ ์ฌ์ฉ๋๋ค.
PUT :POST์ ๋น์ทํ๋ฉฐ ๋ฐ์ดํฐ๋ฅผ ์์ฑ ํ ๋ ์ฌ์ฉ๋๋ Method.
์๋ฒ์์ ํต์ ์ํ๋ฅผ ๋ํ๋ด์ฃผ๋ ์ฝ๋๋ฅผ ๋งํ๋ค.
์๋๋ ๊ทธ ์์ ๋ค์ด๋ค.
HTTP/1.1 301 Moved Permanently
Location: http://www.example.org/index.asp
- URI: uniform resource identifier ๋ก ํด๋น ์ฌ์ดํธ์ ํน์ ์์์ ์์น๋ฅผ ๋ํ๋ด๋ '์ ์ผ'ํ์ฃผ์
- HTTP Method: Http request๊ฐ ์๋ํ๋ action์ ์ ์ํ ๊ฒ์ด๋ค.
- Playload: HTTP request์์ ๋ณด๋ด๋ ๋ฐ์ดํฐ(body)๋ฅผ ๋งํ๋ค.
์น์์์ ์ฌ์ฉ๋๋ ์ฌ๋ฌ ๋ฆฌ์์ค๋ฅผ HTTP URI๋ก ํํํ๊ณ ๊ทธ ๋ฆฌ์์ค์ ๋ํ ํ์๋ฅผ Method๋ก ์ ์ํ๋ ๋ฐฉ์์ด๋ค.
๋ฆฌ์์ค๋ฅผ ์ด๋ป๊ฒ ํ๋ค ๋ฅผ ๊ตฌ์กฐ์ ์ผ๋ก ๊น๋ํ๊ฒ ํํํ๋ ๊ฒ์ ๋งํ๋ค.
(HTTP URI๋ก ์ ์๋ ๋ฆฌ์์ค๋ฅผ HTTP Method + Playload๋ก ํํํ๋ ๊ฒ)
๋ฉ์๋๋ ์ฃผ๋ก GET, POST๋ง ์ฌ์ฉํ๋ค.
HTTP POST https://api.trueshort.com/user/portfolio { "user_id" : 1, "stocks": [ "005930", "298730", "378900" ] }
์/ํ ์ ๊ตฌ์กฐ๋ฅผ ๋ฐ๋ผ์ค์ผ ํ๋ค.
ex)
- https://api.trueshort.com/kospi/stock/005930 ์ด๋ผ๋ ๊ตฌ์กฐ๋ผ๋ฉด, KOSPI์ ์ํด์๋ ์ฃผ์(Stock) ์ค ์ผ์ฑ์ ์(005930)์ ๋ํ๋ด๋ ๊ฒ์ด๋ค.
uri์ underscore์ฃผ๋ก ํฌํจํ์ง ์๊ณ ์์ด ๋๋ฌธ์๋ณด๋ค ์๋ฌธ์๋ฅผ ์ด๋ค. ๋๋ฌด ๊ธด๋จ์ด๋ ์ ์ฌ์ฉํ์ง ์๋๋ค(๊ฐ๋ ์ฑ์ค์!) ๋ํ ์ฃผ๋ก ๋ช ์ฌ๋ก ์์ฑ์ ํ๋๋ฐ ๋์ฌ๋ Method๋ฅผ ํตํด ํํํ๊ธฐ ๋๋ฌธ์ด๋ค.
Routing: ๊ฒฝ๋ก์ ๋ง๊ฒ ์๋ง๋ ํ์ผ์ ๋๊ฒจ ์ฃผ๋๊ฒ.