03. HTTP ๋ฉ์๋
HTTP ๋ฉ์์ง์ ์์ ๋ผ์ธ์ ๋ฐ์ดํฐ ์กฐ์ ํ์๋ฅผ ๋ช ์ํ์ฌ ๋ณด๋ผ ์ ์๋ค. ์ด๊ฒ์ HTTP ๋ฉ์๋ ๋ผ๊ณ ํ๋ค. GET, POST, PUT, PATCH, DELETE ๋ฅผ ์ฃผ๋ก ์ฌ์ฉํ๋ค.
๋ฉ์๋๋ฅผ ์ฌ์ฉํ๊ฒ ๋ ์ด์ ๋ ํจ์จ์ ์ผ๋ก URI๋ฅผ ์ค๊ณํ๊ธฐ ์ํจ์ด๋ผ ํ ์ ์๋ค. URI ์๋ ์ ๊ทผํ๋ ค๋ ์์์ ์ ๋ณด (ํ์, ๊ฒ์ํ ๋ฑ ๋ฆฌ์์ค)๋ง ๋ช ์ํ๊ณ , ๊ทธ ์์์ ๋์์ผ๋ก ํ๋ ํ์๋ ๋ฉ์๋์์ ์ ์ํ๋ฉด ๊น๋ํ URI ์ค๊ณ๊ฐ ๊ฐ๋ฅํด์ง๋ค.
๐ง ย 01. HTTP ๋ฉ์์ง
- ๋ฉ์๋๋ฅผ ์์๋ณด๊ธฐ ์ ์, HTTP ๋ฉ์์ง์ ๋ํด ๋จผ์ ์์๋ณด์.
์ถ์ฒ: ๊น์ํ์ ๋ชจ๋ ๊ฐ๋ฐ์๋ฅผ ์ํ HTTP (์ธํ๋ฐ)
| ๊ตฌ์กฐ | ๊ตฌ์ฑ |
|---|---|
| start-line | HTTP ๋ฉ์๋, ์์ฒญ ๋์, HTTP ๋ฒ์ |
| header | field-name, content-type, content-length ๋ฑ |
| empty line | ๋ฌด์กฐ๊ฑด ํ ์ค์ ๋์ด๋ค. |
| message body | ์ค์ ์ ์กํ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๋๋ค. |
- start-line : ์๋ฒ๊ฐ ์ํํด์ผ ํ ๋์์ ์ง์ ํ๊ณ , ์์ฒญ ๋์(๊ฒฝ๋ก)์ ์ง์ ํ๋ค. ์๋ต ์์๋ ์์ฒญ์ ๋ํ ์ฑ๊ณต, ์คํจ ์ฌ๋ถ๋ฅผ ์ํ ์ฝ๋ (200, 400, 500) ๋ก ๋ด์์ ๋ณด๋ธ๋ค.
- header : HTTP ์ ์ก์ ํ์ํ ๋ชจ๋ ๋ถ๊ฐ ์ ๋ณด๋ฅผ ๋ณด๋ธ๋ค. ๋ฉ์์ง ๋ฐ๋์ ํ์ (ํ ์คํธ์ธ์ง json์ธ์ง), ํฌ๊ธฐ, ์ธ์ฆ, ๋ธ๋ผ์ฐ์ ์ ๋ณด, ์บ์ ๊ด๋ฆฌ ์ ๋ณด ๋ฑ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์๋ค.
๐ง ย 02. GET
GET /search?q=hello&hl=ko
- ๋ฆฌ์์ค๋ฅผ ์กฐํํ๋ค.
- ์๋ฒ์ ์ ๋ฌํ๊ณ ์ถ์ ๋ฐ์ดํฐ๋ ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ๋ฅผ ํตํด์ ์ ๋ฌํ๋ค.
- ๋ฉ์์ง ๋ฐ๋๋ฅผ ํตํด์ ์ ๋ฌํด๋ ๋์ง๋ง, ์ง์ํ์ง ์๋ ๊ณณ์ด ๋ง์์ ๊ถ์ฅํ์ง ์๋๋ค.
๐ง ย 03. POST
POST /members HTTP/1.1
Content-Type: application/json
{
"username" : "young",
"age" : 20
}
- ์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ค.
- ์ ๋ฆฌ์์ค๋ฅผ ์์ฑํ๊ฑฐ๋ ๊ฐ์ ๋ณ๊ฒฝํ๋ ๋ฑ ์์ ์ ์ํํ๋ค.
๐ง ย 04. PUT
PUT /members/100 HTTP/1.1
Content-type: application/json
{
"username" : "old",
"age" : 50
}
- ๋ฆฌ์์ค๋ฅผ ์์ ํ ๋์ฒดํ๋ค. ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฉด ์ญ์ ํ ๋ฑ๋กํ๊ณ , ์์ผ๋ฉด ์์ฑํ๋ค.
- ํด๋ผ์ด์ธํธ๊ฐ ๋ฆฌ์์ค๋ฅผ ์๋ณํ๋ค. ์ ์์ ์ฝ๋๋ฅผ ๋ณด๋ฉด ํด๋ผ์ด์ธํธ๊ฐ members ์ 100๋ฒ์งธ ์ ์ ๋ฅผ ์์์ผ ํด๋น ์ ์ ๋ฅผ ๋์ฒดํ๋ ์์ฒญ์ ๋ณด๋ผ ์ ์์์ ์ดํดํ ์ ์๋ค.
- ๋ง์ฝ ์์ฒญ ๋ฐ์ดํฐ๊ฐ age๋ง ์๋ค๊ณ ํ๋๋ผ๋, ๋ฆฌ์์ค๋ฅผ ์์ ํ ๋์ฒดํ๊ธฐ ๋๋ฌธ์ 100๋ฒ์งธ ์ ์ ์ ์ ๋ณด๋ username ์ ์ฌ๋ผ์ง๊ณ age ๋ง ๋ฑ๋ก(๋์ฒด)๋ ๊ฒ์ด๋ค.
๐ง ย 05. PATCH
PATCH /members/100 HTTP/1.1
Content-Type: application-json
{
"age" : 50
}
- ๋ฆฌ์์ค๋ฅผ ๋ถ๋ถ ๋ณ๊ฒฝํ๋ค.
- ๋ฆฌ์์ค๋ฅผ ์์ ๋์ฒดํด๋ฒ๋ฆฌ๋ PUT ๊ธฐ๋ฅ์ ๋ณด์ํ๊ธฐ ์ํด ์ต๊ทผ ๋ฑ์ฅํ ๋ฉ์๋์ด๋ค.
๐ง ย 06. DELETE
DELETE /members/100 HTTP/1.1
Host: localhost:8080
- ๋ฆฌ์์ค๋ฅผ ์ ๊ฑฐํ๋ค.
๐ง ย 07. ๋ฉ์๋์ ์์ฑ
- ์ ๋ฉ์๋๋ค์ ๊ฐ๋ณ ์์ฑ์ ์ฐจ์ด๊ฐ ์๋ค.
- ์ฃผ์ํ ์ฐจ์ด์ ์ ์๋ 3๊ฐ์ง๊ฐ ์๋ค.
| ๋ฉ์๋ | ์์ | ๋ฉฑ๋ฑ | ์บ์๊ฐ๋ฅ |
|---|---|---|---|
| GET | โญ๏ธ | โญ๏ธ | โญ๏ธ |
| POST | โ | โ | โญ๏ธ |
| PUT | โ | โญ๏ธ | โ |
| PATCH | โ | โ | โญ๏ธ |
| DELETE | โ | โญ๏ธ | โ |
- ์์ : ํธ์ถํด๋ ๋ฆฌ์์ค๋ฅผ ๋ณ๊ฒฝํ์ง ์๋๋ค.
- ๋ฉฑ๋ฑ : ์ฌ๋ฌ๋ฒ ํธ์ถํด๋ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค.
- ์บ์๊ฐ๋ฅ : ์๋ต ๊ฒฐ๊ณผ ๋ฆฌ์์ค๋ฅผ ์บ์ํด์ ์ฌ์ฉํด๋ ๋๋๊ฐ.