HTTP API ์ค๊ณ ์์ ์ค ์๋ 3๊ฐ์ง ์์์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค.
1. HTTP API - ์ปฌ๋ ์
- POST ๊ธฐ๋ฐ ๋ฑ๋ก
- ์) ํ์๊ด๋ฆฌ API ์ ๊ณต
2. HTTP API - ์คํ ์ด
- PUT ๊ธฐ๋ฐ ๋ฑ๋ก
- ์) ์ ์ ์ปจํ
์ธ ๊ด๋ฆฌ, ์๊ฒฉ ํ์ผ ๊ด๋ฆฌ
- ์น ํ์ด์ง ํ์ ๊ด๋ฆฌ
- GET, POST๋ง ์ง์
๐ 1. ํ์๊ด๋ฆฌ ์์คํ
(API ์ค๊ณ)
๐ POST ๊ธฐ๋ฐ ๋ฑ๋ก
- ํ์ ๋ชฉ๋ก /members -> GET
- ํ์ ๋ฑ๋ก /members -> POST ๐ ํ์์ ๋ฑ๋กํ๋ค.
- ํ์ ์กฐํ /members/{id} -> GET ๐ ํ์ ํ๋๋ฅผ ์กฐํํ๋ค.
- ํ์ ์์ /members/{id} -> PATCH, PUT, POST ๐ ์์ ํ ๋ PATCH, ๋์ฒด๋ PUT(์์ ํ ๋ฎ์๋! ๊ฒ์ํ์ ๊ฒ์๊ธ ์์ ํ ๋ ์ฌ์ฉ), ์ด๊ฒ๋ ์ ๊ฒ๋ ์ ๋งคํ ๊ฒฝ์ฐ ์ฒํ๋ฌด์ POST ์ฌ์ฉํ๊ธฐ.
- ํ์ ์ญ์ /members/{id} -> DELETE ๐ ์ํ๋ ํ์ ๋ฒํธ๋ฅผ ์ฐ๊ณ DELETE๋ฅผ ํ๋ค.
ํญ์ ๋ฆฌ์์ค๋ฅผ ์๋ณํด์ผํ๋ค. ์) ๋ฏธ๋ค๋์ ์บ๋ผ -> '๋ฏธ๋ค๋'์ด ๋ฆฌ์์ค์!
POST - ์ ๊ท์์ ๋ฑ๋ก ํน์ง
- ํด๋ผ์ด์ธํธ๋ ๋ฑ๋ก๋ ๋ฆฌ์์ค์ URI๋ฅผ ๋ชจ๋ฅธ๋ค.
- ํ์ ๋ฑ๋ก /memebers -> POST
- POST /members
- ์๋ฒ๊ฐ ์๋ก ๋ฑ๋ก๋ ๋ฆฌ์์ค URI๋ฅผ ์์ฑํด์ค๋ค
- HTTP/1.1 201 Created
- Location: /members/100
- ์ปฌ๋ ์
- ์๋ฒ๊ฐ ๊ด๋ฆฌํ๋ ๋ฆฌ์์ค ๋๋ ํ ๋ฆฌ
- ์๋ฒ๊ฐ ๋ฆฌ์์ค์ URI๋ฅผ ์์ฑํ๊ณ ๊ด๋ฆฌ
- ์ฌ๊ธฐ์ ์ปฌ๋ ์
์ /members
๐ PUT ๊ธฐ๋ฐ ๋ฑ๋ก
- ํ์ผ ๋ชฉ๋ก /files -> GET
- ํ์ผ ์กฐํ files/{filename} -> GET
- ํ์ผ ๋ฑ๋ก files/{filename} -> PUT
- ํ์ผ ์ญ์ /files/{filename} -> DELETE
- ํ์ผ ๋๋ ๋ฑ๋ก /files -> POST
PUT - ์ ๊ท ์์ ๋ฑ๋ก ํน์ง
- ํด๋ผ์ด์ธํธ๊ฐ ๋ฆฌ์์ค URI๋ฅผ ์๊ณ ์์ด์ผ ํ๋ค.
- ํ์ผ ๋ฑ๋ก /files/{filename} -> PUT
- PUT **/files/star.jpg**
- ํด๋ผ์ด์ธํธ๊ฐ ์ง์ ๋ฆฌ์์ค์ URI๋ฅผ ์ง์ ํ๋ค.
- ์คํ ์ด(Store)
- ํด๋ผ์ด์ธํธ๊ฐ ๊ด๋ฆฌํ๋ ๋ฆฌ์์ค ์ ์ฅ์
- ํด๋ผ์ด์ธํธ๊ฐ ๋ฆฌ์์ค์ URI๋ฅผ ์๊ณ ๊ด๋ฆฌ
- ์ฌ๊ธฐ์ ์คํ ์ด๋ /files
POST๊ฐ์ ๊ฒฝ์ฐ์๋ ๋ฆฌ์์ค์ URI๋ฅผ ๋ชฐ๋ผ์ /members/๋ง ๋๊ฒจ์ฃผ๋ฉด ์์์ {100}์ด๋ผ๋ ํ์๋ฒํธ ์ซ์๊ฐ ๋ถ๋๋ค. ๊ทผ๋ฐ PUT์ ๋ณธ์ธ์ด ์๊ณ URI๋ฅผ ์ง์ ํ๋ค.
ํ์ง๋ง ๋๋ถ๋ถ์ ์ค๋ฌด์์๋ POST ๊ธฐ๋ฐ์ ์ปฌ๋ ์
๋ค์ ๋ง์ด ์ฌ์ฉํ๋ค.
-
HTML FORM์ GET,POST๋ง ์ง์ํ๋ค.
-
AJAX ๊ฐ์ ๊ธฐ์ ์ ์ฌ์ฉํด์ ํด๊ฒฐ ๊ฐ๋ฅํ๋ค -> ํ์ API ์ฐธ๊ณ
-
์ปจํธ๋กค URI
- GET, POST๋ง ์ง์ํ๋ฏ๋ก ์ ์ฝ์ด ์๋ค.
- ์ด๋ฐ ์ ์ฝ์ ํด๊ฒฐํ๊ธฐ ์ํด ๋์ฌ๋ก ๋ ๋ฆฌ์์ค ๊ฒฝ๋ก ์ฌ์ฉ
- POST์ /new, /edit, /delete๊ฐ ์ปจํธ๋กค URI
- HTTP ๋ฉ์๋๋ก ํด๊ฒฐํ๊ธฐ ์ ๋งคํ ๊ฒฝ์ฐ ์ฌ์ฉ (HTTP API ํฌํจ)
-
ํ์ ๋ชฉ๋ก /members -> GET
-
ํ์ ๋ฑ๋ก ํผ /members/new -> GET
-
ํ์ ๋ฑ๋ก /members/new, /members -> POST
-
ํ์ ์กฐํ /members/{id} -> GET
-
ํ์ ์์ ํผ /members/{id}/edit -> GET
-
ํ์ ์์ /members/{id}/edit, /members/{id} -> POST
-
ํ์ ์ญ์ /members/{id}/delete -> POST
๐ ์ฐธ๊ณ ํ๋ฉด ์ข์ URI ์ค๊ณ ๊ฐ๋
- ๋ฌธ์
- ๋จ์ผ ๊ฐ๋
(ํ์ผ ํ๋, ๊ฐ์ฒด ์ธ์คํด์ค, ๋ฐ์ดํฐ๋ฒ ์ด์ค ROW)
- ์) members/100, /files/star.jpg
- ์ปฌ๋ ์
(๋๋ถ๋ถ ์ปฌ๋ ์
์ ์ฌ์ฉํ๋ค)
- ์๋ฒ๊ฐ ๊ด๋ฆฌํ๋ ๋ฆฌ์์ค ๋๋ ํฐ๋ฆฌ
- ์๋ฒ๊ฐ ๋ฆฌ์์ค์ URI๋ฅผ ์์ฑํ๊ณ ๊ด๋ฆฌํ๋ค
- ์) /members
- ์คํ ์ด (store) (๊ฒ์ํ ๊ฐ์ ๊ฒฝ์ฐ ์คํ ์ด๋ ์ข
์ข
์ฌ์ฉํ๋ค)
- ํด๋ผ์ด์ธํธ๊ฐ ๊ด๋ฆฌํ๋ ์์ ์ ์ฅ์
- ํด๋ผ์ด์ธํธ๊ฐ ๋ฆฌ์์ค์ URI๋ฅผ ์๊ณ ๊ด๋ฆฌ
์) /files
- ์ปจํธ๋กค๋ฌ, ์ปจํธ๋กค URI
- ๋ฌธ์, ์ปฌ๋ ์
, ์คํ ์ด๋ก ํด๊ฒฐํ๊ธฐ ์ด๋ ค์ด ์ถ๊ฐ ํ๋ก์ธ์ค ์คํ
- ๋์ฌ๋ฅผ ์ง์ ์ฌ์ฉ
- ์) /members/{id}/delete