๊น์ํ๋์ ๋ชจ๋ ๊ฐ๋ฐ์๋ฅผ ์ํ HTTP ์น ๊ธฐ๋ณธ ์ง์์ ์๊ฐํ๋ฉด์ ์ ๋ฆฌํ ๋ด์ฉ ์ ๋๋ค.
1. HTTP API ๋ฅผ ๋ง๋ค์ด ๋ณด๊ธฐ
ํ์ ์ ๋ณด ๊ด๋ฆฌ API ์ค๊ณ
1. ํ์ ๋ชฉ๋ก ์กฐํ : /read-member-list
2. ํ์ ์กฐํ : /read-member-by-id
3. ํ์ ๋ฑ๋ก : /create-member
4. ํ์ ์์ : /update-member
5. ํ์ ์ญ์ : /delete-member
โก๏ธ ์๊ตฌ์ฌํญ ๊ธฐ๋ฐ์ผ๋ก API ๋ฅผ ๋ง๋ค๋ฉด ์์ ๊ฐ์ด ํ์ ์์ ์๋ชป๋ API URI ์ค๊ณ๋ฅผ ํฉ๋๋ค.
1.1 API ์ค๊ณ ๋ถ๋ฆฌ
๋ฆฌ์์ค : ํ์
ํ์ : ์กฐํ, ๋ฑ๋ก, ์์ , ์ญ์
โก๏ธ API ์ค๊ณ ํ ๋ ๋ฆฌ์์ค์ ํด๋น ๋ฆฌ์์ค๋ฅผ ๋์์ผ๋ก ํ๋ ํ์๋ฅผ ๋ถ๋ฆฌํด์ผ ํฉ๋๋ค.
โก๏ธ ํ์์ด๋ผ๋ ๋ฆฌ์์ค๋ง ์๋ณํ๊ณ ํด๋น ๋ฆฌ์์ค๋ฅผ URI ์ ๋งคํํ๋ฉด ๋ฉ๋๋ค.
1.2 API ์ฌ์ค๊ณ
1. ํ์ ๋ชฉ๋ก ์กฐํ : /members
2. ํ์ ์กฐํ : /members/{id}
3. ํ์ ๋ฑ๋ก : /members/{id}
4. ํ์ ์์ : /members/{id}
5. ํ์ ์ญ์ : /members/{id}
โก๏ธ ์์ง๋ ํ์๋ ๋ฐ๋ก ๊ตฌ๋ถ๋์ง ์์ต๋๋ค.
โก๏ธ ๊ตฌ๋ถํ๋ ๋ฐฉ๋ฒ์ URI ๋ฆฌ์์ค๋ง ์๋ณํด ๋์ผ๋ฉด HTTP ๋ฉ์๋์ธ GET, POST, PUT, DELETE ๋ฑ ์กฐํ, ์์ , ์์ , ์ญ์ ์ญํ ์ ์ํ ํฉ๋๋ค.
โก๏ธ ์ถ๊ฐ๋ก ๊ณ์ธต ๊ตฌ์กฐ์ ์์ ์ปฌ๋ ์ ์ ๋ณด๊ณ ๋ณต์ ๋จ์ด ์ฌ์ฉ์ ๊ถ์ฅ ํฉ๋๋ค.(member → members)
2. HTTP ๋ฉ์๋
HTTP ๋ฉ์๋ ์ข ๋ฅ
- GET : ๋ฆฌ์์ค๋ฅผ ์กฐํ
- POST : ์์ฒญ ๋ฐ์ดํฐ๋ฅผ ๋ด์์ ์ฒ๋ฆฌ
- PUT : ๋ฆฌ์์ค๋ฅผ ๋์ฒด, ํด๋น ๋ฆฌ์์ค๊ฐ ์์ผ๋ฉด ์์ฑ
- PATCH : ๋ฆฌ์์ค ๋ถ๋ถ ๋ณ๊ฒฝ
- DELETE : ๋ฆฌ์์ค ์ญ์
- HEAD : GET๊ณผ ๋์ผํ์ง๋ง ๋ฉ์์ง ๋ถ๋ถ์ ์ ์ธํ๊ณ ์ํ ์ค๊ณผ ํค๋๋ง ๋ฐํ
- OPTIONS : ๋์ ๋ฆฌ์์ค์ ๋ํ ํต์ ๊ฐ๋ฅ ์ต์ (๋ฉ์๋)๋ฅผ ์ค๋ช (์ฃผ๋ก CORS์์ ์ฌ์ฉ)
- TRACE : ๋์ ๋ฆฌ์์ค์ ๋ํ ๊ฒฝ๋ก๋ฅผ ๋ฐ๋ผ ๋ฉ์์ง ๋ฃจํ๋ฐฑ ํ ์คํธ๋ฅผ ์ํ.
โก๏ธ ๊ฐ์ธ์ ์ธ ๊ฒฝํ์ผ๋ก ๋นจ๊ฐ ์์ผ๋ก ํ์ํ ๋ค ๊ฐ์ง๋ฅผ ์ฃผ๋ก ์ฌ์ฉ ํ์ต๋๋ค.
GET
๋ฆฌ์์ค๋ฅผ ์กฐํํ๋๋ฐ ๋ณดํต ์ฌ์ฉ ๋ฉ๋๋ค.
- ์๋ฒ์ ์ ๋ฌํ๊ณ ์ถ์ ๋ฐ์ดํฐ๋ ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ ๋๋ ์ฟผ๋ฆฌ ์คํธ๋ง์ ํตํด์ ์ ๋ฌ ํฉ๋๋ค.
- GET ์ ๋ฉ์ธ์ง ๋ฐ๋๋ฅผ ์ ๋ฌํ ์ ์์ง๋ง, ์ค๋ฌด์์ ๊ฑฐ์ ์ฌ์ฉํ์ง ์์ต๋๋ค.(์ง์ํ์ง ์๋ ์๋ฒ๊ฐ ๋ง๋ค.)
ํด๋ผ์ด์ธํธ์์ /members/100 ์ ์์ฒญํ๊ณ ์๋ฒ์์๋ /members/100 ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์กฐํํ์ฌ ์๋ต ๋ฉ์์ง๋ฅผ ๋ณด๋ ๋๋ค.
POST
ํด๋ผ์ด์ธํธ์์ ๋ฉ์์ง ๋ฐ๋๋ฅผ ํตํด ์๋ฒ๋ก ์์ฒญํ ํ ์๋ฒ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ธฐ๋ฅ์ ์ํ ํฉ๋๋ค.
- ์ ๋ฌ๋ ๋ฐ์ดํฐ๋ก ์ ๊ท ๋ฐ์ดํฐ ๋ฑ๋ก์ด๋ ๋ณ๊ฒฝ๋ ํ๋ก์ธ์ค๋ฅผ ๋ค๋ฃฐ ๋ ๋ง์ด ์ฌ์ฉ ํฉ๋๋ค.
๋ฆฌ์๋ฅด๋ฅผ /members ๋ก ์ ๋ฌํ๊ณ ์ฆ, ํด๋ผ์ด์ธํธ๋ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ์ ์ ๋ฌํ๊ณ ์๋ฒ์์๋ ๋ฐ์ดํฐ๋ฅผ ๋ด๋ถ์ ์ผ๋ก ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ๊ฑด์ง ๋ฏธ๋ฆฌ ์ฝ์์ ํฉ๋๋ค. ๊ทธ ํ ์๋ฒ๋ /members/100 ์ด๋ผ๋ ์ ๊ท ๋ฆฌ์์ค ์๋ณ์๋ฅผ ์์ฑํ๊ณ ์์์ด ์์ฐ๋ ๊ฒฝ๋ก๋ฅผ ์๋ต ๋ฉ์์ง๋ก ๋ณด๋ ๋๋ค.
PUT
๋ฆฌ์์ค๊ฐ ์์ผ๋ฉด ๋์ฒดํ๊ณ , ๋ฆฌ์์ค๊ฐ ์์ผ๋ฉด ์์ฑ ํฉ๋๋ค.
- POST ์ ๋ค๋ฅธ ์ ์ PUT ์ ํด๋ผ์ด์ธํธ๊ฐ ๊ตฌ์ฒด์ ์ธ ๋ฆฌ์์ค์ ์ ์ฒด ์์น๋ฅผ ์๊ณ URI ๋ฅผ ์ง์ ํด์ ์๋ฒ์ ์ ๋ฌ ํฉ๋๋ค.
1. ๋ฆฌ์์ค๊ฐ ์๋ ๊ฒฝ์ฐ
ํด๋ผ์ด์ธํธ๊ฐ /members/100 ๋ฆฌ์์ค ์ง์ ํด์ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ์๊ฒ ๋ณด๋ด๋ฉด ์๋ฒ๋ /members/100 ๋ฆฌ์์ค๊ฐ ์์ต๋๋ค.
๊ทธ๋ฌ๋ฉด ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ธ ๋ฆฌ์์ค๋ก ๋์ฒด ํด๋ฒ๋ฆฝ๋๋ค.
2. ๋ฆฌ์์ค๊ฐ ์๋ ๊ฒฝ์ฐ
ํด๋ผ์ด์ธํธ๊ฐ members/100 ๋ฆฌ์์ค ์ง์ ํด์ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ์๊ฒ ๋ณด๋๋๋ฐ ์๋ฒ์์ ํด๋น ๋ฆฌ์์ค๊ฐ ์์ด์ ์ ๊ท ๋ฆฌ์์ค๋ก ์์ฑ ๋ฉ๋๋ค.
โ PUT ์ฃผ์ ์ฌํญ
ํด๋ผ์ด์ธํธ๊ฐ /members/100 ๋ฐ์ดํฐ์ username์ด ์๊ณ age๋ก ์ง์ ํด์ ๋ณด๋ด๋ฉด ์๋ฒ์์๋ age๋ฅผ ์ ๋ฐ์ดํธ๋ฅผ ํ๋๋ฐ username ์์ฒด๊ฐ ๋ ์๊ฐ๋ฒ๋ฆฝ๋๋ค. ๊ธฐ์กด ๋ฆฌ์์ค๋ฅผ ์๋ก์ด ๋ฆฌ์์ค๋ก ์์ ํ ๋์ฒดํ๋ ๊ฒ์ด ์ค์ ! ์ด๋ ๊ฒ ๋๋ฉด ๋ฆฌ์์ค๋ฅผ ์์ ํ๊ธฐ ์ด๋ ต๋ค.
PATCH
๋ฆฌ์์ค๋ฅผ ๋ถ๋ถ ๋ณ๊ฒฝ ํฉ๋๋ค. ํด๋ผ์ด์ธํธ๊ฐ /members/100 ๋ฐ์ดํฐ์ username์ด ์๊ณ age๋ก ์ง์ ํด์ ๋ณด๋ด๋ฉด ์๋ฒ์์๋ username์ ๋จ์์๊ณ age๋ง ๋ณ๊ฒฝ!
DELETE
ํด๋ผ์ด์ธํธ๊ฐ /members/100 ๋ฅผ ์ญ์ ํด๋ฌ๋ผ๊ณ ์์ฒญํ๋ฉด ์๋ฒ์์ ๋ฆฌ์์ค๋ฅผ ์ญ์ ํฉ๋๋ค.
3. HTTP ๋ฉ์๋ ์์ฑ
์์ (Safe Methods)
ํธ์ถํด๋ ๋ฆฌ์์ค๊ฐ ๋ณ๊ฒฝํ์ง ์์ต๋๋ค.
- GET์ ๋จ์ํ ์กฐํ๋ง ํ๊ธฐ ๋๋ฌธ์ ์์ ํฉ๋๋ค ์ด์ ๋ ? ํ๋ฒ ํธ์ถํด๋ ์ฌ๋ฌ๋ฒ ํธ์ถํด๋ ๋ณ๊ฒฝ์ด ์ผ์ด๋์ง ์๊ธฐ ๋๋ฌธ!
- POST, PUT, PATCH, DELETE๋ ์์ ํ์ง ์์ต๋๋ค.
- ๋ง์ฝ์ ๊ทธ๋๋ ๊ณ์ ํธ์ถํด์ ์๋ฒ์์ ๋ก๊ทธ๊ฐ ๊ณ์ ์๊ฒ๋์ ์๋ฒ ์ฅ์ ๊ฐ ์ผ์ด๋ ๋๋ ์์ ์ ๊ทธ๋ฐ ๋ถ๋ถ๊น์ง ๊ณ ๋ คํ์ง ์์ต๋๋ค.
- ์์ ์ ํด๋น ๋ฆฌ์์ค๋ง ๊ณ ๋ ค
๋ฉฑ๋ฑ(Idempotent Methods)
์ฐ์ฐ์ ์ฌ๋ฌ ๋ฒ ์ ์ฉํ๋๋ผ๋ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง์ง ์๋ ์ฑ์ง์ ๋ฉฑ๋ฑ์ฑ(idempotence) ์ด๋ผ๊ณ ํฉ๋๋ค.
- GET์ ํ ๋ฒ ์กฐํํ๋ ๋ ๋ฒ ์กฐํํ๋ ๊ฐ์ ๊ฒฐ๊ณผ๋ก ์กฐํ ๋ฉ๋๋ค.
- PUT์ ๊ฒฐ๊ณผ๋ฅผ ๋์ฒดํ๊ธฐ ๋๋ฌธ์ ๊ฐ์ ์์ฒญ์ ์ฌ๋ฌ ๋ฒ ํด๋ ์ต์ข ๊ฒฐ๊ณผ๋ ๋์ผ ํฉ๋๋ค.
- DELETE๋ ๊ฒฐ๊ณผ๋ฅผ ์ญ์ ํ๊ธฐ ๋๋ฌธ์ ๊ฐ์ ์์ฒญ์ ์ฌ๋ฌ ๋ฒ ํด๋ ์ญ์ ๋ ๊ฒฐ๊ณผ๋ ๋์ผ ํฉ๋๋ค.
- POST์ ๋ฉฑ๋ฑ์ด ์๋๋๋ค. ๋ ๋ฒ ํธ์ถํ๋ฉด ๊ฐ์ ๊ฒฐ์ ๊ฐ ์ค๋ณตํด์ ๋ฐ์ํด์ ์๋ก์ด ๋ฆฌ์์ค๋ก ๊ตฌ๋ณ์ด ๋ฉ๋๋ค.
์บ์ฑ ๊ฐ๋ฅ Cacheable
์น ๋ธ๋ผ์ฐ์ ์ ์ฉ๋์ด ํฐ ์ด๋ฏธ์ง๋ฅผ ํ๋ฒ ์์ฒญ์ ํ๋ฉด ๊ทธ ๋ค์์ ๋๊ฐ์ด ์ฉ๋์ด ํฐ ์ด๋ฏธ์ง๋ฅผ ์์ฒญํ ํ์ ์์ต๋๋ค.
๋๊ฐ์ ์ด๋ฏธ์ง๋ฅผ ์๋ฒ์์ ๋ค์ด๋ก๋ ๋ฐ์ผ๋ฉด ์ค๋ ๊ฑธ๋ฆฌ๊ธฐ ๋๋ฌธ์ ๋นํจ์จ์ ์ ๋๋ค.
๊ทธ๋์ ๋ก์ปฌ PC์ ์น ๋ธ๋ผ์ฐ์ ์ ์ฅ์ ํ๊ณ ์์ ๋ ์บ์๋ผ๊ณ ํฉ๋๋ค.
- ์บ์๋ GET, HEAD, POST, PATCH ๊ฐ๋ฅ ํ์ง๋ง ์ค์ ๋ก๋ GET, HEAD ์ ๋๋ง ์บ์๋ก ์ฌ์ฉ
- POST, PATCH๋ ์บ์๋ฅผ ํ๋ ค๋ฉด ๋ณธ๋ฌธ ๋ด์ฉ์ผ๋ก ๋ฆฌ์์ค๋ ์บ์ ํค๊ฐ ๋ง์์์ผ ๋๋๋ฐ ๋ณต์กํด์ ๊ตฌํ์ด ์ฝ์ง ์์ต๋๋ค.
- GET, HEAD๋ URI๋ง ์บ์ ํค๋ก ์บ์ํด์ ๋น๊ต์ ๊ฐ๋จํฉ๋๋ค.
'๐ป CS > WEB' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[HTTP] - HTTP ? (0) | 2022.12.01 |
---|---|
[HTTP] - URI์ ์น ๋ธ๋ผ์ฐ์ ์์ฒญ ํ๋ฆ (0) | 2022.11.26 |
[HTTP] - ์ธํฐ๋ท ๋คํธ์ํฌ (0) | 2022.11.25 |
[HTTP] - HTTP status code (0) | 2022.11.24 |