[http] wecode 7์ผ!
HTTP๋?
http๋ HyperText Transfer Protocol์ ์ฝ์๋ค. HTML์ ๋ณด์๋ฉด HyperText๋ ๋ฌธ์์ ๋ฌธ์๊ฐ ๋งํฌ๋ก ์ฐ๊ฒฐ๋๋๋ก ํ๋ ํ๊ทธ๋ก ๊ตฌ์ฑ๋ ์ธ์ด๋ ๋ป์ด๋ค. ๋ค์ ๋งํ๋ฉด, HTML์ ์นํ์ด์ง๋ฅผ ๋ง๋ค๊ธฐ ์ํด์ ์น๋ธ๋ผ์ฐ์ ์์์ ๋์ํ๋ ์ธ์ด๋ฅผ ๋ปํ๋ค. Transfer๋ ๋ง๊ทธ๋๋ก ์ ์ก์ด๋ค. post์ get์ ํตํด ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ค. Protocol์ ๊ท์ฝ์ด๋ค. ์ปดํจํฐ๋ผ๋ฆฌ ์ด๋ป๊ฒ Hyper Text๋ฅผ ์ฃผ๊ณ ๋ฐ์์ง์ ๋ํ ์ฝ์์ด๋ค.
HTTP ํน์ง
1. Request / Response (์์ฒญ / ์๋ต)
์์ฒญ๊ณผ ์๋ต์ HTTP๋ฅผ ๊ตฌ์ฑํ๋ ์ค์ํ ์์๋ค.
2. Stateless
๊ฐ๊ฐ์ HTTP ํต์ ์ ๋ ๋ฆฝ์ ์ด๊ธฐ ๋๋ฌธ์ ๊ณผ๊ฑฐ์ ํต์ ๋ด์ฉ์ ์ ํ ์์ง ๋ชป ํ๋ค. ๋งค ํต์ ๋ง๋ค ํ์ํ ๋ชจ๋ ์ ๋ณด๋ฅผ ๋ด์์ ์์ฒญ์ ๋ณด๋ธ๋ค๋ ๊ฒ์ด๋ค.
๋ฐ๋ผ์, ๋ง์ผ ์ฌ๋ฌ๋ฒ์ ํต์ (์์ฒญ/์๋ต)์ ์งํ๊ณผ์ ์์ ์ฐ์๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๊ฐ ํ์ํ ๊ฒฝ์ฐ(ex. ์จ๋ผ์ธ ์ผํ๋ชฐ์์ ๋ก๊ทธ์ธ ํ ์ฅ๋ฐ๊ตฌ๋ ๊ธฐ๋ฅ)๋ฅผ ์ํด ๋ก๊ทธ์ธ ํ ํฐ ๋๋ ๋ธ๋ผ์ฐ์ ์ ์ฟ ํค, ์ธ์ , ๋ก์ปฌ์คํ ๋ฆฌ์ง ๊ฐ์ ๊ธฐ์ ์ด ํ์์ ์ํด ๋ง๋ค์ด์ก๋ค.
์ถ์ฒ : ์์ฝ๋
Request / Response
1. Request ๋ฉ์ธ์ง ๊ตฌ์กฐ
HTTP์์ฒญ์ ํ๋ก ํธ์๋(ํด๋ผ์ด์ธํธ)๊ฐ ๋ฐฑ์๋(์๋ฒ)์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํด ๋ณด๋ด๋ ๋ฉ์์ง๋ค. ์ด ๋ฉ์์ง๋ ํฌ๊ฒ ์ธ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
- start line : ์์ฒญ์ ์ฒซ ๋ฒ์งธ ์ค. ์ด ๋ถ๋ถ๋ ์ธ ํํธ๋ก ๋๋๋ค.
- HTTP Method: ํด๋น ์์ฒญ์ด ์๋ํ ์ก์ ์ ์ ์ํ๋ ๋ถ๋ถ. ์ฃผ๋ก GET, POST, DELETE๊ฐ ๋ง์ด ์ฐ์
- Request target: ํด๋น request๊ฐ ์ ์ก๋๋ ๋ชฉํ url
- HTTP Version: ๋ง ๊ทธ๋๋ก ์ฌ์ฉ๋๋ HTTP ๋ฒ์ ์ ๋ปํ๋ค. ์ฃผ๋ก 1.1 ๋ฒ์ ์ด ๋๋ฆฌ ์ฐ์
GET /login HTTP/1.1
ํด์: GET ๋ฉ์๋๋ก login ์ด๋ผ๋ ์์ฒญ ํ๊ฒ์ HTTP 1.1 ๋ฒ์ ์ผ๋ก ์์ฒญ์ ๋ณด๋ด๊ฒ ๋ค!
- header : ํค๋๋ ํด๋น ์์ฒญ์ ๋ํ ์ถ๊ฐ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ค.
key: Value ๊ฐ์ผ๋ก ๋์ด์๋ค. ์์ฃผ ์ฌ์ฉ๋๋ Headers ์ ์ ๋ณด์๋ ๋ค์์ด ์๋ค.
Headers: {
Host: ์์ฒญ์ ๋ณด๋ด๋ ๋ชฉํ(ํ๊ฒ)์ ์ฃผ์. ์ฆ, ์์ฒญ์ ๋ณด๋ด๋ ์น์ฌ์ดํธ์ ๊ธฐ๋ณธ ์ฃผ์๊ฐ ๋๋ค.
(ex. www.apple.co.kr)
User-Agent: ์์ฒญ์ ๋ณด๋ด๋ ํด๋ผ์ด์ธํธ์ ๋ํ ์ ๋ณด (ex. chrome, firefox, safari, explorer)
Content-Type: ํด๋น ์์ฒญ์ด ๋ณด๋ด๋ ๋ฉ์ธ์ง body์ ํ์ (ex. application/json)
Content-Length: body ๋ด์ฉ์ ๊ธธ์ด
Authorization: ํ์์ ์ธ์ฆ/์ธ๊ฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ก๊ทธ์ธ ํ ํฐ์ Authroization ์ ๋ด๋๋ค
}
- body : ํด๋น ์์ฒญ์ ์ค์ ๋ด์ฉ์ผ๋ก ์ฃผ๋ก Body๋ฅผ ์ฌ์ฉํ๋ ๋ฉ์๋๋ POST๋ค.
ex) ๋ก๊ทธ์ธ ์์ ์๋ฒ์ ๋ณด๋ผ ์์ฒญ์ ๋ด์ฉ
Body: {
"user_email": "jun.choi@gmail.com"
"user_password": "wecode"
}
2.Response ๋ฉ์์ง ๊ตฌ์กฐ
- Status Line : ์๋ต์ ์ํ์ ๋ํ ์ค์ด๋ค. ์๋ต์ Status Line ๋ ์ธ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋๋ค.
- HTTP Version: ์์ฒญ์ HTTP๋ฒ์ ๊ณผ ๋์ผ
- Status Code: ์๋ต ๋ฉ์ธ์ง์ ์ํ ์ฝ๋
- Status Text: ์๋ต ๋ฉ์ธ์ง์ ์ํ๋ฅผ ๊ฐ๋ตํ๊ฒ ์ค๋ช ํด์ฃผ๋ ํ ์คํธ
HTTP/1.1 404 Not Found
ํด์: HTTP 1.1 ๋ฒ์ ์ผ๋ก ์๋ตํ๊ณ ์๋๋ฐ, ํ๋ก ํธ์๋์์ ๋ณด๋ธ ์์ฒญ(ex. ๋ก๊ทธ์ธ ์๋)์ ๋ํด์
์ ์ ์ ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์๊ธฐ ๋๋ฌธ์(Not Found) 404 ์ํ ๋ฉ์ธ์ง๋ฅผ ๋ณด๋ธ๋ค.
HTTP/1.1 200 SUCCESS
ํด์: HTTP 1.1 ๋ฒ์ ์ผ๋ก ์๋ตํ๊ณ ์๋๋ฐ, ํ๋ก ํธ์๋์์ ๋ณด๋ธ ์์ฒญ์ ๋ํด์ ์ฑ๊ณตํ๊ธฐ ๋๋ฌธ์
200 ์ํ ๋ฉ์ธ์ง๋ฅผ ๋ณด๋ธ๋ค.
-
header : ์์ฒญ์ ํค๋์ ๋์ผํ๋ค.
-
body : ์์ฒญ์ Body์ ์ผ๋ฐ์ ์ผ๋ก ๋์ผํ๋ค. ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ Body ์ ๋ฐ์ดํฐ ํ์ ์ JSON(JavaScript Object Notation) ์ด๋ค.
HTTP Request Methods
๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ๋ฉ์๋๋ก๋ GET, POST, DELETE๊ฐ ์๋ค.
- GET
- POST
๋ฐ์ดํฐ๋ฅผ ์์ฑ / ์์ ํ ๋ ์ฃผ๋ก ์ฌ์ฉ๋๋ ๋ฉ์๋๋ค.
- DELETE
Response Status Codes
200: OK
๋ง ๊ทธ๋๋ก ๋ฌธ์ ์์ด ์ ์ฒ๋ฆฌ ๋๋ค๋ ๋ป์ด๋ค.
201: Created
๋ฌด์ธ๊ฐ ์์ฑ๋์ ๋ ์ค๋ ์๋ต
400: Bad Request
ํด๋น ์์ฒญ์ด ์๋ชป๋์์ ๋ ๋ณด๋ด๋ Status Code. ์ฃผ๋ก ์์ฒญ์ Body์ ๋ณด๋ด๋ ๋ด์ฉ์ด ์๋ชป๋์์ ๋ ์ฌ์ฉ๋๋ ์ฝ๋๋ค.
401: Unauthorized
๋ก๊ทธ์ธ์ด๋ ์ผ์ ๊ถํ์ด ํ์ํ๋ค๋ ๋ป์ด๋ค.
403: Forbidden
๊ถํ์ด ์๋ค๋ ๋ป์ด๋ค.
404: Not Found
์์ฒญ๋ URI๊ฐ ์กด์ฌํ์ง ์๋๋ค.
500: Internal Server Error
์๋ฒ์์ ์๋ฌ ๋ฌ์ ๋ ์ฝ๋
์ถ์ฒ : ์์ฝ๋
Author And Source
์ด ๋ฌธ์ ์ ๊ดํ์ฌ([http] wecode 7์ผ!), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://velog.io/@dongha1992/http-wecode-7์ผ์ ์ ๊ท์: ์์์ ์ ๋ณด๊ฐ ์์์ URL์ ํฌํจ๋์ด ์์ผ๋ฉฐ ์ ์๊ถ์ ์์์ ์์ ์ ๋๋ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ
์ธ ๋ฐ๊ฒฌ์ ์ ๋
(Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค