HTTP Method
์ฌ์ฉ์๊ฐ ์ด๋ค ํํ์ด์ง๋ก ์ด๋ํ๊ธฐ ์ํด URL์ ์ฃผ์์ฐฝ์ ์์ฑํ๊ณ ์ํฐ๋ฅผ ๋๋ฅด๋ฉด ํด๋น ํ์ด์ง๋ก ์ด๋๋๋ค. ์ฌ์ฉ์๋ ๋จ์ํ URL(Uniform Resource Locator)๋ฅผ ์ ๋ ฅํ์์ ๋ฟ์ด์ง๋ง ์๋ฒ ๋ด๋ถ์์๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์๋ตํ๊ธฐ ์ํด์ ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ์ด์ผ ํ๋ค. ์ฌ๊ธฐ์ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ๋ก ์์ฒญ์ ๋ณด๋ด๋ ๋ฐฉ๋ฒ์ HTTP Method๋ผ ํ๋ค. ์ฆ, HTTP ํด๋ผ์ด์ธํธ๊ฐ HTTP ์๋ฒ์๊ฒ ๋ฆฌ์์ค๋ฅผ ์์ฒญํ๋ฉด์ ๋ฆฌ์์ค์ ๋ํด ์๋ฒ๊ฐ ์ด๋ป๊ฒ ๋์ํ ์ง ์๋ ค์ฃผ๊ธฐ ์ํด ์ ๋ฌํ๋ ๋ช ๋ น์ด๋ค. HTTP ์์ฒญ(Request) ๋ฉ์์ง์ ํฌํจ๋์ด ์ ์ก๋๋ค.
- Safe Method(์์ ): ๋ฆฌ์์ค๋ฅผ ์์ ํ์ง ์๋ ๋ฉ์๋๋ฅผ ๋งํ๋ค.
- ๋๋ถ๋ถ์ ๊ฒฝ์ฐ Idempotent ํ๋ฉด Safe ํ๋ค.
- DELETE๋ Idempotent ํ์ง๋ง ๋ฆฌ์์ค๋ฅผ ๋ณ๊ฒฝํ๋ฏ๋ก Safe ํ์ง ์๋ค.
- Idempotent Method(๋ฉฑ๋ฑ): ์ด๋ค ์ฐ์ฐ์ ๋ช ๋ฒ์ด๊ณ ๋ฐ๋ณตํด๋ ๊ฐ์ ๊ฐ์ด ๋์ค๋ ๋ฉ์๋๋ฅผ ๋งํ๋ค.
- Cachable Method(์บ์ ๊ฐ๋ฅ): ํฅํ ์ฌ์ฌ์ฉ์ ์ํด ์ด์ ๋ํ ์๋ต์ ์ ์ฅํ ์ ์๋ ๋ฉ์๋๋ฅผ ๋งํ๋ค.
- HTTP์์ ์ด๋ค์ง๋ ์บ์ฑ์ ์ ๋ณด์ ๋ํด ์ด๋ค์ง๋ค.
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ ๋ณด๋ฅผ ๋๋ ค์ฃผ๋ ์ฐ์ฐ์๋ง ์บ์ฑ์ ํ ์ ์๋ค.
1. GET
์๋ฒ์๊ฒ ์ด๋ ํ ๋ฆฌ์์ค๋ฅผ ๋ฌ๋ผ๊ณ ์์ฒญํ์ฌ ์กฐํํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
- URL์ ๋ฐ์ดํฐ๋ฅผ ํฌํจ์์ผ ์์ฒญํ๋ค.
- ๋ฐ์ดํฐ๋ฅผ Header(ํค๋)์ ํฌํจํ์ฌ ์ ์กํ๋ค.
- URL์ ๋ฐ์ดํฐ๊ฐ ๋ ธ์ถ๋์ด ๋ณด์์ ์ทจ์ฝํ๋ค.
- ๊ธธ์ด ์ ํ์ด ์๋ค.
- ์บ์ฑํ ์ ์๋ค.
GET ๋ฐฉ์์ ๊ฐ๋จํ ๋ฐ์ดํฐ๋ฅผ URL์ ๋ฃ๋๋ก ์ค๊ณ๋ ๋ฐฉ์์ด๋ผ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋ ์์ ํ๊ณ๊ฐ ์๋ค. HTTP ์์ฒด๋ GET ๋ฐฉ์์ URL ๊ธธ์ด์ ์ ์ฝ์ ๋๊ณ ์์ง ์์ง๋ง, ๋ธ๋ผ์ฐ์ ์์ ์ต๋ ๊ธธ์ด๋ฅผ ์ ํํ๊ณ ์์ผ๋ฉฐ URLํ์์ ๋ง์ง ์๋ ํ๋ผ๋ฏธํฐ ์ด๋ฆ์ด๋ ๊ฐ์ ์ธ์ฝ๋ฉ ๋์ด ์ ๋ฌํด์ผ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ํน๋ณํ ์ ์กํ๋ ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฏ๋ก Body๋ ๋ณดํต ๋น ์ํ๋ก ์ ์ก๋๋ค.
์๋ฅผ ๋ค์ด ์ด๋ค ํ์ด์ง์์ ๋ก๊ทธ์ธ์ ํ๊ธฐ ์ํด ID์ PW๋ฅผ ์ ๋ ฅํ์ ๋, GET ๋ฐฉ์์ผ๋ก ์ ์กํ๋ ๊ฒฝ์ฐ์๋ ? ๋งํฌ๋ฅผ ํตํด URL์ ๋์ ์๋ฆฌ๊ณ , id๋ผ๋ ํค(key)์ ๋ํด์ coco๋ผ๋ ๊ฐ(value)์, pw๋ผ๋ ํค(key)์ tistory๋ผ๋ ๊ฐ(value)์ ์ ์กํ๋ค. ์ด ๋ถ๋ถ์ ์ฟผ๋ฆฌ ์คํธ๋ง(query string)์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
www.dev-coco.tistory.com/login?id=coco&pw=tistory
์ฌ๋ฌ๊ฐ์ Key์ Value๋ฅผ ๋ณด๋ด๋ ๊ฒฝ์ฐ์ &๋ฅผ ์ฌ์ฉํ์ฌ ์ด์ด์ฃผ๋ GET ๋ฐฉ์์ ์ต์ํ์ ๋ณด์์ ์ง๋ ํ์ง ์๊ธฐ ๋๋ฌธ์ ์ค์ ์น์ฌ์ดํธ์์ ID์ PW ๊ฐ์ ์ค์ํ ์ ๋ณด๋ฅผ GET ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ๋ฉด ๊ฐ์ธ์ ๋ณด๊ฐ ๋
ธ์ถ๋๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค. ๊ทธ๋์ GET ๋ฐฉ์์ ๊ฐ์ธ์ ๋ณด๊ฐ ํฌํจ๋์ง ์๋ ์ํฉ์์ ์บ์ฑ์ ํ์ฌ ์๋๋ฅผ ๋์ด๊ฑฐ๋ ์ฆ๊ฒจ์ฐพ๊ธฐ๋ฅผ ํธ๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
2. HEAD
GET์ฒ๋ผ ํ๋ํ์ง๋ง, ์๋ฒ์๊ฒ Response-Body ์์ด Header๋ง ์ป๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
- ๋ฆฌ์์ค๋ฅผ ๊ฐ์ ธ์ค์ง ์์๋ ๋ฌด์์ธ๊ฐ(ํ์ ๋ฑ)๋ฅผ ์์๋ผ ์ ์๋ค.
- ์๋ต ์ํ ์ฝ๋๋ฅผ ํตํด ๊ฐ์ฒด๊ฐ ์กด์ฌํ๋์ง ํ์ธํ ์ ์๋ค.
3. POST
ํด๋ผ์ด์ธํธ๊ฐ ๋ฆฌ์์ค์ ์์น๋ฅผ ์ง์ ํ์ง ์์์ ๋ ๋ฆฌ์์ค๋ฅผ ์์ฑํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
- URL์ ๋ฐ์ดํฐ๋ฅผ ๋ ธ์ถํ์ง ์๊ณ ์์ฒญํ๋ค.
- ๋ฐ์ดํฐ๋ฅผ Body(๋ฐ๋)์ ํฌํจํ์ฌ ์ ์กํ๋ค.
- URL์ ๋ฐ์ดํฐ๊ฐ ๋ ธ์ถ๋์ง ์์ ๊ธฐ๋ณธ ๋ณด์์ด ๋์ด์๋ค.
- ๋ฐ์ดํฐ ๊ธธ์ด์ ์ ํ์ด ์๋ค.
- ์บ์ฑํ ์ ์๋ค.
POST ๋ฐฉ์์ BODY์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด์ ์ ์กํ๋ค. ๋ฐ๋ผ์ ๋ฉ์์ง ๊ธธ์ด์ ์ ํ์ ์์ง๋ง ์ต๋ ์์ฒญ์ ๋ฐ๋ ์๊ฐ์ธ Time Out์ด ์กด์ฌํ๋ฏ๋ก ํด๋ผ์ด์ธํธ์์ ํ์ด์ง๋ฅผ ์์ฒญํ๊ณ ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ์ด ์กด์ฌํ๋ค.
์๋ ํจ์๋ ์ฒ์์ /dogs/1์ ์์ฑํ๊ณ , ๋ค์ ์์ฒญํ๋ฉด /dogs/2๋ฅผ ์์ฑํ๋ค.
POST /dogs HTTP/1.1
{ "name": "blue", "age": 5 }
HTTP/1.1 201 Created
4. PUT
์์ฑ ๋๋ ์ ๋ฐ์ดํธ ์ ์ฌ์ฉํ๊ณ ๋ฆฌ์์ค์ ์์น๋ฅผ ๋ช ํํ ์ง์ ํ ํ ์์ฒญํ๋ค.
- Idempotent ํ๋ค.
- /dogs์ ํ๋กํผํฐ(์์ฑ)๊ฐ name๊ณผ age ๋ฟ์ด๋ผ๋ฉด ๋ช ๋ฒ์ ์ํํ๋๋ผ๋ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฅํ๋ค.
PUT /dogs/3 HTTP/1.1
{ "name": "blue", "age": 5 }
5. PATCH
PUT์ด ๋ฆฌ์์ค์ ๋ชจ๋ ํ๋กํผํฐ๋ฅผ ์ ๋ฐ์ดํธํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค๋ฉด PATCH๋ ๋ถ๋ถ๋ง ์ ๋ฐ์ดํธํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
- PUT๊ณผ ๋์ผํ๊ฒ ๋ฆฌ์์ค์ ์์น๋ฅผ ํด๋ผ์ด์ธํธ๊ฐ ์๊ณ ์์ ๋ ์ฌ์ฉํ๋ค.
6. DELETE
์๋ฒ์๊ฒ ์์ฒญ URL๋ก ์ง์ ํ ๋ฆฌ์์ค๋ฅผ ์ญ์ ํ ๊ฒ์ ์์ฒญํ๋ค.
7. CONNET
HTTP ํฐ๋๋ง์ ํ ๋ ์ฐ์ธ๋ค.
- ์ค๊ฐ์ ํ๋ก์ ์๋ฒ๋ฅผ ์ํด์๋ CONNECT๋ก ์์ฒญํ๊ณ ๋ง์ง๋ง ํ๋ก์์์ end-point๋ก๋ GET ๋๋ CONNECT๋ฅผ ๋ ๋ฆฐ๋ค.
- HTTPS๋ผ๋ฉด CONNECT๋ฅผ HTTP๋ผ๋ฉด ๋ ์ค ์๋ฌด๊ฑฐ๋ ์จ๋ ์๊ด์๋ค.
8. OPTIONS
ํด๋น ๋ฆฌ์์ค์ ๋ํด ๊ฐ๋ฅํ Operation์ด ๋ฌด์์ธ์ง ์๋ต์ ์ป๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
- Cachable ํ์ง ์๋ค.
- ์ฆ, ๋ฆฌ์์ค๋ ์ฃผ์ด์ง URL์ ๋ํ ์ ๋ณด์ธ๋ฐ OPTIONS๋ URL์ ์ ๋ณด๊ฐ ์๋ ๊ทธ URL์ ์ด๋ค ์ฐ์ฐ ๊ธฐ๋ฅ์ด ๊ฐ๋ฅํ์ง ์๋ ค์ค๋ค.
9. TRACE
ํด๋ผ์ด์ธํธ๊ฐ ๋ฐฉ๊ธ ๋ณด๋ธ ์์ฒญ์ ์๋ฒ์๊ฒ ๋ค์ ๋ฌ๋ผ๊ณ ์์ฒญํ๋ค.
- ์์ ์ ์์ฒญ์ด ์๋ฒ์ ๋๋ฌํ์ ๋ ์ด๋ป๊ฒ ๋ณด์ด๊ฒ ๋๋์ง ์๋ ค์ค๋ค.
- ์ฃผ๋ก ์ง๋จ(๋๋ฒ๊น )์ ์ํด ์ฌ์ฉ๋๋ค.