44์ฅ REST API
REST: Representational State Transfer
์น์ด HTTP๋ฅผ ์ ๋๋ก ์ฌ์ฉํ์ง ๋ชปํ๊ณ ์๋ ์ํฉ์ ๋ณด๊ณ HTTP์ ์ฅ์ ์ ์ต๋ํ ํ์ฉํ ์ ์๋ ์ํคํ ์ฒ๋ก์ REST๋ฅผ ๋ก์ด ํ๋ฉ์ด ์๊ฐํ๊ณ , ์ด๋ HTTP ํ๋กํ ์ฝ์ ์๋์ ๋ง๊ฒ ๋์์ธํ๋๋ก ์ ๋ํ๊ณ ์๋.
REST์ ๊ธฐ๋ณธ ์์น์ ์ฑ์คํ ์งํจ ์๋น์ค ๋์์ธ์ RESTful ์ด๋ผํ๋ค.
์ฆ, REST๋ HTTP๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ๋ฆฌ์์ค์ ์ ๊ทผํ๋ ๋ฐฉ์์ ๊ท์ ํ ์ํคํ ์ฒ๊ณ , REST API ๋ REST๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๋น์ค API๋ฅผ ๊ตฌํํ๊ฒ์ ์๋ฏธํ๋ค.
REST API์ ๊ตฌ์ฑโ
REST API ๋ ์์ (resource), ํ์ (verb), ํํ (representations)์ 3๊ฐ์ง ์์๋ก ๊ตฌ์ฑ๋๋ค. REST๋ ์์ฒด ํํ ๊ตฌ์กฐ self-descriptiveness๋ก ๊ตฌ์ฑ๋์ด REST API๋ง์ผ๋ก http์์ฒญ์ ๋ด์ฉ์ ์ดํดํ ์ ์๋ค.
- resource : ์์ - URI (์๋ํฌ์ธํธ)
- verb: ์์์ ๋ํ ํ์ - HTTP ์์ฒญ ๋ฉ์๋
- representations: ์์์ ๋ํ ํ์์ ๊ตฌ์ฒด์ ๋ด์ฉ - ํ์ด๋ก๋
REST API ์ค๊ณ ์์นโ
REST ์์ ๊ฐ์ฅ ์ค์ํ ๊ธฐ๋ณธ์ ์ธ ์์น์ ์์๋ณด์.
- URI๋ ๋ฆฌ์์ค๋ฅผ ํํํด์ผํ๋ค. ๋ฆฌ์์ค๋ฅผ ์๋ณํ ์ ์๋ ์ด๋ฆ์ ๋์ฌ๋ณด๋ค๋ ๋ช ์ฌ๋ฅผ ์ฌ์ฉ.
GET /todos/1
- ๋ฆฌ์์ค์ ๋ํ ํ์๋ http ์์ฒญ ๋ฉ์๋๋ก ํํ HTTP ์์ฒญ ๋ฉ์๋๋ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์์ธ ์์ฒญ์ ์ข ๋ฃ์ ๋ชฉ์ (๋ฆฌ์์ค์ ๋ํ ํ์)์ ์๋ฆฌ๋ ๋ฐฉ๋ฒ์ด๋ค. GET, POST, PUT, PATCH, DELETE ๋ฅผ ์ฌ์ฉํ์ฌ CRUD๋ฅผ ๊ตฌํํ๋ค.
GETโ
- ์ข ๋ฅ: index / retrieve
- ํ์ด๋ก๋: X
POSTโ
- ์ข ๋ฅ: create
- ํ์ด๋ก๋: O
PUTโ
- ์ข ๋ฅ: replace (์ ์ฒด๊ต์ฒด)
- ํ์ด๋ก๋: O
PATCHโ
- ์ข ๋ฅ: modify (์ผ๋ถ์์ )
- ํ์ด๋ก๋: O
DELETEโ
- ์ข ๋ฅ: delete
- ํ์ด๋ก๋: X
๋ฆฌ์์ค์ ๋ํ ํ์๋ URI์ ํํํ์ง ์๋๋ค.
JSON Server๋ฅผ ์ด์ฉํ REST API ์ค์ตโ
JSON Server๋ฅผ ์ฌ์ฉํด ๊ฐ์ REST API ์๋ฒ๋ฅผ ๊ตฌ์ถํ์ฌ HTTP ์์ฒญ์ ์ ์ก, ์๋ต ๋ฐ์ ์ ์๋ค.