HTTP ๋ฉ์๋
HTTP ๋ฉ์๋๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ ์ฌ์ด์ ์ด๋ฃจ์ด์ง๋ ์์ฒญ(Request)๊ณผ ์๋ต(Response) ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ๋ฐฉ์์ด๋ค.
HTTP ๋ฉ์๋์ ์ข ๋ฅ๋ ์ด 9๊ฐ์ง์ธ๋ฐ, ์ด์ค ์ฃผ๋ก ์ฌ์ฉํ๋ ๋ฉ์๋ 5๊ฐ์ง์ ๊ธฐํ ๋ฉ์๋ 4๊ฐ์ง๋ก ๊ตฌ๋ถ๋๋ค.
์ฃผ์ ๋ฉ์๋
GET
: ๋ฆฌ์์ค ์กฐํPOST
: ์์ฒญ ๋ฐ์ดํฐ ์ฒ๋ฆฌ, ์ฃผ๋ก ๋ฑ๋ก์ ์ฌ์ฉPUT
: ๋ฆฌ์์ค๋ฅผ ๋์ฒดํ๋ฉฐ ํด๋น ๋ฆฌ์์ค๊ฐ ์์ผ๋ฉด ์์ฑPATCH
: ๋ฆฌ์์ค ๋ถ๋ถ ๋ณ๊ฒฝDELETE
: ๋ฆฌ์์ค ์ญ์
๊ธฐํ ๋ฉ์๋
HEAD
: GET๊ณผ ๋์ผํ์ง๋ง ๋ฉ์์ง(body) ๋ถ๋ถ์ ์ ์ธํ๊ณ ์ํ ์ค๊ณผ ํค๋๋ง ๋ฐํOPTIONS
: ๋์ ๋ฆฌ์์ค์ ๋ํ ํต์ ๊ฐ๋ฅ ์ต์ ์ ์ค๋ช (์ฃผ๋ก CORS์์ ์ฌ์ฉ)CONNECT
: ๋์ ์์์ผ๋ก ์๋ณ๋๋ ์๋ฒ์ ๋ํ ํฐ๋์ ์ค์ TRACE
: ๋์ ๋ฆฌ์์ค์ ๋ํ ๊ฒฝ๋ก๋ฅผ ๋ฐ๋ผ ๋ฉ์์ง ๋ฃจํ๋ฐฑ ํ ์คํธ ์ํ
HTTP ๋ฉ์๋ ํน์ง
- ์์ ์ฑ(Safe)
- ์์ ํ ๋ฉ์๋์ ๋ชฉ์ ์ ์๋ฒ์ ์ํฅ์ ์ค ์ ์๋ ๋ฉ์๋๊ฐ ์ฌ์ฉ๋ ๋ ์ฌ์ฉ์๋ค์๊ฒ ๊ทธ ์ฌ์ค์ ์๋ ค์ค ์ ์๋๋ก ํ๋ ๊ฒ
- ์ฝ๊ธฐ ์ ์ฉ์ผ ๋ ์์ ํ ๋ฉ์๋๋ก ๊ฐ์ฃผ
- Ex) GET, HEAD, OPTIONS, TRACE
- ๋ฉฑ๋ฑ์ฑ(Idempotent)
- ํน์ ๋ฉ์๋์ ์์ฒญ์ ์ฌ๋ฌ๋ฒ ํ๋๋ผ๋ ๋์ผํ ๊ฒฐ๊ณผ๊ฐ ๋ฐํ๋ ๋ ๋ฉฑ๋ฑํ๋ค๊ณ ํจ
- Ex) GET, PUT, DELETE, HEAD, OPTIONS, TRACE
- ์บ์ ๊ฐ๋ฅ์ฑ
- ์ถํ ์ฌ์ฌ์ฉ์ ์ํด ์๋ต์ ์ ์ฅํ ์ ์์์ ๋ํ๋
- Ex) GET, POST, PATCH, HEAD
1. GET
- ๋ฆฌ์์ค ์กฐํ / ๋ฐ์ดํฐ ๊ฒ์ (Read)
- ์๋ฒ์ ์ ๋ฌํ๊ณ ์ถ์ ๋ฐ์ดํฐ๋ ์ฟผ๋ฆฌ ์คํธ๋ง(Query-String)์ ํตํด ์ ๋ฌ
- Ex) GET /users/10?username=jiyun&age=24
- ์ฌ๋ฌ ๊ฐ์ ๋์ผํ ์์ฒญ์ ๋ณด๋ด๋ฉด ๋งค๋ฒ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ์์ฑ (๋ฉฑ๋ฑ์ฑ)
- ์บ์ฑ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ ์กฐํ ์ GET์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ ๋ฆฌ
2. POST
- ๋ฐ์ดํฐ ์ถ๊ฐ/์์ฑ/์ฒ๋ฆฌ (Create/Insert)
- ๋ฉ์์ง ๋ฐ๋(body)๋ฅผ ํตํด ์๋ฒ๋ก ์์ฒญ ๋ฐ์ดํฐ ์ ๋ฌ -> ์๋ฒ๋ ์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ์ฌ ์ ๋ฐ์ดํธ
- ์ฃผ๋ก ์ ๊ท ๋ฆฌ์์ค ๋ฑ๋ก, ํ๋ก์ธ์ค ์ฒ๋ฆฌ์ ์ฌ์ฉ
- ๋ฉฑ๋ฑ์ฑ์ ๊ฐ์ง์ง ์์ ๋์ผํ POST ์์ฒญ์ ํ์ฌ๋ ๋ค๋ฅธ ๋ฆฌ์์ค๊ฐ ์์ฑ
3. PUT
- ๊ธฐ์กด ๋ฆฌ์์ค ์์ / ๋ฐ์ดํฐ ๊ฐฑ์ (Update)
- ๋ฉ์์ง ๋ฐ๋ ๋ด์ ๋ฆฌ์์ค๊ฐ ์์ผ๋ฉด ๋ฎ์ด์ฐ๊ณ , ์์ผ๋ฉด ์๋ก ์์ฑ
- ํด๋ผ์ด์ธํธ๋ ๋ฆฌ์์ค์ ๊ตฌ์ฒด์ ์ธ ๊ฒฝ๋ก๋ฅผ ์ง์ ํด์ฃผ์ด์ผ ํจ
- Ex) PUT /users/10: 10๋ฒ ์ ์ ์์
4. PATCH
- ๋ฆฌ์์ค์ ์ผ๋ถ ๋ถ๋ถ ๋ณ๊ฒฝ (Update)
- ๋ฉ์์ง ๋ฐ๋ ๋ด์ ๋ฆฌ์์ค๋ง์ ๋ถ๋ถ์ ์ผ๋ก ์ ๋ฐ์ดํธ (PATCH๋ฅผ ์ง์ํ์ง ์๋ ๊ฒฝ์ฐ POST๋ก ๋์ฒด)
5. DELETE
- ๊ธฐ์กด ๋ฆฌ์์ค ์ญ์ (Delete)
- ์์ ์ญ์ ํ ํด๋น ์์์ด ์ฌ๋ผ์ ธ ์๋ตํ ๋ด์ฉ์ด ์๋๊ฒฝ์ฐ 204(NO CONTENT) ๋ฐํ
โป GET๊ณผ POST์ ์ฐจ์ด
GET์ ์๋ฒ ์์ ๋ฐ์ดํฐ๋ ์ํ๋ฅผ ๋ณ๊ฒฝ์ํค์ง ์์์ผํ๊ธฐ ๋๋ฌธ์ ์กฐํ๋ฅผ ์ํด์๋ง ์ฌ์ฉํ์ง๋ง, POST๋ ๋ฐ์ดํฐ ์ถ๊ฐ/์์ฑ/์ฒ๋ฆฌ ๋ฑ์ ์ํด ์ฌ์ฉํ๋ค.
GET์ ๋ฉฑ๋ฑ์ฑ์ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ๋งค ์์ฒญ ์๋ง๋ค ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ด์ง๋ง POST๋ ๋ฉฑ๋ฑ์ฑ์ด ์๋ค.
GET๊ณผ POST์ ์์ธํ ํน์ง๊ณผ ์ฐจ์ด๋ ์๋ ํฌ์คํ
์ ์์ธํ ์ ๋ฆฌํด๋์๋ค.
https://zu-techlog.tistory.com/65
โป POST์ PUT์ ์ฐจ์ด
POST๋ Create/Insert์ ๊ฐ๋ ์ด๊ณ , PUT์ Update์ ๊ฐ๋ ์ด๋ค.
PUT์ POST์ ๋ฌ๋ฆฌ ํด๋ผ์ด์ธํธ๊ฐ ๋ฆฌ์์ค์ ์์น๋ฅผ ์๊ณ URI๋ฅผ ์ง์ ํด ์ฃผ์ด์ผ ํ๋ค.
POST๋ ๋ฉฑ๋ฑ์ฑ์ ๊ฐ์ง์ง ์๋ ๋ฐ๋ฉด, PUT์ ๋ฉฑ๋ฑ์ฑ์ ๊ฐ์ง๋ค.
โป PUT๊ณผ PATCH์ ์ฐจ์ด
PUT์ ๋ฆฌ์์ค ์ ์ฒด๋ฅผ ๊ต์ฒดํ๊ณ , PATCH๋ ์ผ๋ถ ๋ฐ์ดํฐ๋ง ๋ณ๊ฒฝํ๋ค.
PUT ์์ฒญ์์ PATCH ์์ฒญ์ฒ๋ผ ๋ฉ์์ง ๋ฐ๋์ ์ผ๋ถ ๋ฐ์ดํฐ๋ง ๋ช ์ํด ๋ณ๊ฒฝํ๋ ค ํ๋ค๋ฉด, ๋ช ์๋์ง ์์ ์์ ๋ฐ์ดํฐ๋ ์ฌ๋ผ์ง์ฑ ๋ฎ์ด์์์ง๋ค.