1. HTTP ๋ฉ์๋๋?
ํด๋ผ์ด์ธํธ๊ฐ ์ฌ์ฉ์ ์์ฒญ์ ๋ชฉ์ ์ด๋ ์ข ๋ฅ๋ฅผ ์น ์๋ฒ์๊ฒ ์๋ฆฌ๋ ๋ฐฉ๋ฒ์ด๋ค.
2. HTTP ๋ฉ์๋ ์ข ๋ฅ
- GET: ๋ฆฌ์์ค ์กฐํ
- POST: ์์ฒญํ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌ. ์ฌ๋ฌ ๋ฐฉ๋ฉด์์ ์ฌ์ฉ ๊ฐ๋ฅํ๋ฉฐ ์ฃผ๋ก ๋ฑ๋ก์ ์ฌ์ฉ
- PUT: ํด๋น ๋ฆฌ์์ค๊ฐ ์์ผ๋ฉด ์์ฑํ๊ณ ์์ผ๋ฉด ๋ฆฌ์์ค๋ฅผ ์์ ํ ๋์ฒด
- PATCH: ๋ฆฌ์์ค๋ฅผ ๋ถ๋ถ์ ์ผ๋ก ๋ณ๊ฒฝ
- DELETE: ๋ฆฌ์์ค๋ฅผ ์ญ์
1. GET
- ์๋ฒ์ ์ ๋ฌํ ๋ฐ์ดํฐ๋ Query Prameter, Query String์ ํตํด์ ์ ๋ฌํ๋ค.
- Message Body๋ฅผ ํตํด์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ์๋ ์์ง๋ง ์ง์ํ์ง ์๋ ์๋ฒ๊ฐ ๋ง์์ ๊ถ์ฅํ์ง ์๋๋ค.
2. POST
- Message Body๋ฅผ ํตํด ์๋ฒ๋ก ์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ค.
- ์๋ฒ์์๋ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ์ฌ๋ฌ ๋ชจ๋ ๊ธฐ๋ฅ์ ์ํํ ์ ์๋ค.
- ์ฃผ๋ก ์ ๊ท ๋ฆฌ์์ค ๋ฑ๋ก, ํ๋ก์ธ์ค ์ฒ๋ฆฌ์ ์ฌ์ฉํ๋ค.
- ์ฌ๋ฌ ๊ธฐ๋ฅ์ ์ํํ ์ ์๋ค๋ ๋ง์ ์ฆ URI์ POST ์์ฒญ์ด ๋ค์ด์ค๋ฉด ์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ์ง๋ ๋ฆฌ์์ค๋ง๋ค ๋ฐ๋ก ๋ด๊ฐ ์ ํด์ผ ํ๋ค๋ ๊ฒ์ด๋ค.
- POST๋ ํด๋ผ์ด์ธํธ๊ฐ ๋ฑ๋ก๋ ๋ฆฌ์์ค์ URI ์์น๋ฅผ ์์ง ๋ชปํ๊ณ POST ์์ฒญํ๋ฉด ์๋ฒ๊ฐ ์๋ก ๋ฑ๋ก๋ ๋ฆฌ์์ค URI๋ฅผ ์์ฑํด์ ์๋ ค์ค๋ค.
- ์ปฌ๋ ์ (Collection): ์๋ฒ๊ฐ ๊ด๋ฆฌํ๋ ๋ฆฌ์์ค ๋๋ ํฐ๋ฆฌ์ด๋ฉฐ, ์๋ฒ๊ฐ ๋ฆฌ์์ค์ URI๋ฅผ ์์ฑํ๊ณ ๊ด๋ฆฌํ๋ค. ๋ง์ฝ์ /members์ post ๋ฉ์๋๊ฐ ์๋ค๊ณ ํ๋ฉด /members๊ฐ ์ปฌ๋ ์ ์ด ๋๋ค.
- 1. ์ ๋ฆฌ์์ค๋ฅผ ์์ฑ
- 2. ์์ฒญ ๋ฐ์ดํฐ ์ฒ๋ฆฌ
- ๋จ์ํ ๋ฐ์ดํฐ๋ฅผ ์์ฑ ๋๋ ๋ณ๊ฒฝํ๋๊ฒ ์๋๋ผ ํ๋ก์ธ์ค๋ฅผ ์ฒ๋ฆฌํด์ผ ํ๋ ๊ฒฝ์ฐ
- ์์) ์ฃผ๋ฌธ์์ ๊ฒฐ์ ์๋ฃ -> ๋ฐฐ๋ฌ ์์์ฒ๋ผ ๋จ์ํ ๊ฐ ๋ณ๊ฒฝ์ ๋์ด ํ๋ก์ธ์ค์ ์ํ๊ฐ ๋ณ๊ฒฝ๋๋ ๊ฒฝ์ฐ
- ์ฌ๊ธฐ์ POST์ ๊ฒฐ๊ณผ๋ ํญ์ ์๋ก์ด ๋ฆฌ์์ค๊ฐ ์์ฑ๋๋ ๊ฒ ์๋๋ ๊ฒ์ ์ ์ ์๋ค.
- ๋จ์ํ ๋ฐ์ดํฐ๋ฅผ ์์ฑ ๋๋ ๋ณ๊ฒฝํ๋๊ฒ ์๋๋ผ ํ๋ก์ธ์ค๋ฅผ ์ฒ๋ฆฌํด์ผ ํ๋ ๊ฒฝ์ฐ
- 3. ๋ค๋ฅธ ๋ฉ์๋๋ก ์ฒ๋ฆฌํ๊ธฐ ์ ๋งคํ ๊ฒฝ์ฐ์
- Message Body๋ฅผ ํตํด ์กฐํ์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๋๊ธฐ๊ณ ์ถ์๋ฐ GET ๋ฉ์๋๋ Message Body๋ฅผ ์ง์ํ์ง ์๋ ์๋ฒ๊ฐ ์์ ์ ์์ผ๋ฏ๋ก POST๋ฅผ ์ฌ์ฉํ ์๋ ์๋ค.
์ฐธ๊ณ ) ์ปจํธ๋กค URI
์ด์ ํฌ์คํ ์์ URI ์ค๊ณ๋ฅผ ํ ๋ ํ์๋ ์ฐ์ ๋ฐฐ์ ํ๊ณ ๋ฆฌ์์ค๋ง ์๋ณํ์ฌ ์ค๊ณํด์ผ ํ๋ค๊ณ ํ๋๋ฐ ์ด๊ฒ ํญ์ ์ ์ฉํ ์ ์๋ ๊ฑด ์๋๋ค.
์์ ๊ฒฐ์ ์๋ฃ์์ ๋ฐฐ๋ฌ ์์์ผ๋ก ๋ณ๊ฒฝํ๋ POST ์์ฒญ์์๋ URI๋ฅผ /orders/{orderId}/start-delivery์ ๊ฐ์ด ํ์๋ฅผ URI์ ์ถ๊ฐํ์ฌ ์ปจํธ๋กค URI๋ก ์ค๊ณํ ์๋ ์๋ค.
๋๋ HTML Form์ GET, POST๋ง ์ง์ํ๋ฏ๋ก ์ ์ฝ์ด ์๊ธธ ์ ๋ฐ์ ์๋ค. ์ด๋ฐ ์ ์ฝ์ ํด๊ฒฐํ๊ธฐ ์ํด ๋์ฌ๋ก ๋ ๋ฆฌ์์ค ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ๋๋ฐ ์์๋ก POST: /members/{id}/delete ์ฒ๋ผ ์ด์ฉ์ ์์ด delete๋ผ๋ ๋์ฌ๋ฅผ URI์ ์ถ๊ฐํ๋ค.
3. PUT
- ๋ฆฌ์์ค๊ฐ ์์ผ๋ฉด ์์ ํ ๋์ฒดํ๊ณ ์์ผ๋ฉด ์๋ก ์์ฑํ๋ค.
- POST๋ ํด๋ผ์ด์ธํธ๊ฐ ๋ฆฌ์์ค ์์น๋ฅผ ์์ง ๋ชปํ๊ณ ์๋ฒ๊ฐ ์๋ก ๋ฑ๋ก๋ ๋ฆฌ์์ค์ URI๋ฅผ ์์ฑํด์ ์์น๋ฅผ ๋ฐํํด์ฃผ๋๋ฐ PUT์ /members/100์ฒ๋ผ ํด๋ผ์ด์ธํธ๊ฐ ๋ฆฌ์์ค ์์น๋ฅผ ์ด๋ฏธ ์๊ณ URI๋ฅผ ์ง์ ํ๋ค.
4. PATCH
- ๋ฆฌ์์ค๋ฅผ ๋ถ๋ถ์ ์ผ๋ก ๋ณ๊ฒฝํ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ค.
- ์ง์ํ์ง ์๋ ์๋ฒ๊ฐ ์กด์ฌํ ์๋ ์์ด์ ํ์ธํ๊ณ ์ฌ์ฉํ๋์ง POST๋ก ๋์ฒดํ๋ค.
5. DELETE
- ๋ฆฌ์์ค๋ฅผ ์ ๊ฑฐํ ๋ ์ฌ์ฉํ๋ค.
HTTP ๋ฉ์๋์ ์์ฑ
- ์์ (Safe Methods)
- ๋ฉฑ๋ฑ (Idempotent Methods)
- ์บ์ ๊ฐ๋ฅ (Chacheable Methods)
1. ์์
- ํธ์ถํด๋ ๋ฆฌ์์ค๋ฅผ ๋ณ๊ฒฝํ์ง ์๋๋ค.
- GET์ ์์ ํ์ง๋ง ๊ทธ๊ฑธ ์ ์ธํ POST, PUT, PATCH, DELETE๋ ์์ ํ์ง ์๋ค.
- ์์ ์ ํด๋น ๋ฆฌ์์ค๊ฐ ๋ณ๊ฒฝ๋๋์ง๋ง ๊ณ ๋ คํ๋ค.
2. ๋ฉฑ๋ฑ
- ๋์ผํ ์ฌ์ฉ์๊ฐ ์ด๋ ํ ์์ฒญ์ ํ ๋ฒ ํธ์ถํ๋ ๋ช ๋ฒ์ ํธ์ถํ๋ ๊ฒฐ๊ณผ๊ฐ ๋์ผํ๋ค.
- ์ธ๋ถ ์์ธ์ผ๋ก ์ธํด ์ค๊ฐ์ ๋ฆฌ์์ค๊ฐ ๋ณ๊ฒฝ๋๋ ๊ฒ ๊น์ง๋ ๊ณ ๋ คํ์ง ์๋๋ค.
- GET, DELETE๋ ๋น์ฐํ ๋ฉฑ๋ฑํ ๊ฒ์ด๊ณ PUT์ ์ ๋ฉฑ๋ฑํ๋๋ฉด ๊ฒฐ๊ณผ๋ฅผ ๋์ฒดํ๋ ์์ ์ ์ฌ๋ฌ๋ฒ ๋ฐ๋ณตํด๋ ์ต์ข ๊ฒฐ๊ณผ๋ ๋์ผํ๊ธฐ ๋๋ฌธ์ด๋ค. POST๋ ์ฌ๋ฌ๋ฒ ํธ์ถํ ๊ฒฝ์ฐ ์๋ฅผ ๋ค์ด ๊ฐ์ ์ฃผ๋ฌธ์ด ์ฌ๋ฌ๋ฒ ์ค๋ณตํด์ ๋ฐ์ํ ์ ์์ผ๋ฏ๋ก ๋ฉฑ๋ฑ์ด ์๋๋ค.
- ์ ๋ฆฌํ์๋ฉด
- GET, PUT, DELETE : ๋ฉฑ๋ฑO
- POST: ๋ฉฑ๋ฑX
- ์ด๋์ ํ์ฉํ ์ ์๋?
- ์๋ ๋ณต๊ตฌ ๋งค์ปค๋์ฆ
- ์๋ฒ๊ฐ ์ ์ ์๋ต์ ๋ชป์ฃผ์์ ๋, ํด๋ผ์ด์ธํธ๊ฐ ํ์คํ ํ๋ ค๊ณ ๊ฐ์ ์์ฒญ์ ๋ค์ ํ๋ ค๊ณ ํ ๋ ํด๋ ๋๋์ง ํ๋จ ๊ทผ๊ฑฐ๊ฐ ๋จ
3. ์บ์ ๊ฐ๋ฅ
- ์๋ต ๊ฒฐ๊ณผ ๋ฆฌ์์ค๋ฅผ ์บ์ํด์ ์ฌ์ฉํ๋ค.
- GET, HEAD, POST, PATCH๋ ์บ์๊ฐ ๊ฐ๋ฅํ๋ค.
- ํ์ง๋ง, ์บ์ ํ๋ ค๋ฉด ๋ฐ๋ ๋ด์ฉ๊น์ง ์บ์ ํค๋ก ๊ณ ๋ คํด์ผ ํ๋๋ฐ POST, PATCH ๊ฐ์ ๊ฒฝ์ฐ๋ ๊ตฌํ์ด ์ฝ์ง ์๋ค.
- ๋ฐ๋ผ์, ์ค์ ๋ก๋ GET, HEAD ๋ง ์บ์๋ก ์ฌ์ฉํ๋ค. GET์ URI๋ง ์ก๊ณ ์บ์ํ๋ฉด ๋๊ธฐ ๋๋ฌธ
์ฐธ๊ณ URI ์ค๊ณ ๊ฐ๋
1. ๋ฌธ์(document)
- ๋จ์ผ ๊ฐ๋ (ํ์ผ ํ๋, ๊ฐ์ฒด ์ธ์คํด์ค, ๋ฐ์ดํฐ๋ฒ ์ด์ค row)
- EX) /members/100, /files/ex.jpg
2. ์ปฌ๋ ์ (collection)
- ์๋ฒ๊ฐ ๊ด๋ฆฌํ๋ ๋ฆฌ์์ค ๋๋ ํฐ๋ฆฌ
- ์๋ฒ๊ฐ ๋ฆฌ์์ค์ URI๋ฅผ ์์ฑํ๊ณ ๊ด๋ฆฌ
- EX) /members
3. ์คํ ์ด(store)
- ํด๋ผ์ด์ธํธ๊ฐ ๊ด๋ฆฌํ๋ ์์ ์ ์ฅ์
- ํด๋ผ์ด์ธํธ๊ฐ ๋ฆฌ์์ค์ URI๋ฅผ ์๊ณ ๊ด๋ฆฌ
- EX) /files
4. ์ปจํธ๋กค๋ฌ(controller), ์ปจํธ๋กค URI
- ๋ฌธ์, ์ปฌ๋ ์ , ์คํ ์ด๋ก ํด๊ฒฐํ๊ธฐ ์ด๋ ค์ด ์ถ๊ฐ ํ๋ก์ธ์ค ์คํ
- ๋์ฌ๋ฅผ URI์ ์ง์ ์ฌ์ฉ
- EX) /members/{id}/delete
'๐ณ DevOps > ๐ก Network' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
URI URL URN ์ฐจ์ด? (0) | 2022.07.14 |
---|---|
Internet Network (0) | 2022.07.14 |