REST ๋
โข
โRepresentational State Transferโ์ ์ฝ์
โข
์์์ ์ด๋ฆ์ผ๋ก ๊ตฌ๋ถํ์ฌ ํด๋น ์์์ ์ํ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ชจ๋ ๊ฒ์ ์๋ฏธ
โข
๊ธฐ๋ณธ์ ์ผ๋ก ์น์ ๊ธฐ์กด ๊ธฐ์ ๊ณผ HTTP ํ๋กํ ์ฝ์ ๊ทธ๋๋ก ํ์ฉํ๊ธฐ ๋๋ฌธ์ ์น์ ์ฅ์ ์ ์ต๋ํ ํ์ฉํ ์ ์๋ ์ํคํ
์ฒ ์คํ์ผ
โข
Client์ Server ์ฌ์ด์ ํต์ ๋ฐฉ์ ์ค ํ๋
HTTP URI๋ฅผ ํตํด ์์์ ๋ช
์ํ๊ณ , HTTP Method๋ฅผ ํตํด ํด๋น ์์์ ๋ํ CRUD Operation์ ์ ์ฉํ๋ ๊ฒ์ ์๋ฏธ
REST ์ฌ์ฉ ์ด์
โข
์ ํ๋ฆฌ์ผ์ด์
๋ถ๋ฆฌ ๋ฐ ํตํฉ
โข
๋ค์ํ ํด๋ผ์ด์ธํธ์ ๋ฑ์ฅ
REST ๊ตฌ์ฑ ์์
1.
์์: URI
โข
๋ชจ๋ ์์์ ๊ณ ์ ํ ID๊ฐ ์กด์ฌํ๊ณ , ์ด ์์์ Server์ ์กด์ฌ
โข
์์์ ๊ตฌ๋ณํ๋ ID๋ โ/users/:user_id์ ๊ฐ์ HTTP URI
โข
Client๋ URI๋ฅผ ์ด์ฉํด์ ์์์ ์ง์ ํ๊ณ ํด๋น ์์์ ์ํ(์ ๋ณด)์ ๋ํ ์กฐ์์ Server์ ์์ฒญ
2.
ํ์: HTTP Method
โข
HTTP ํ๋กํ ์ฝ์ Method๋ฅผ ์ฌ์ฉ
3.
ํํ
โข
Client๊ฐ ์์์ ์ํ์ ๋ํ ์กฐ์์ ์์ฒญํ๋ฉด Server๋ ์ด์ ์ ์ ํ ์๋ต์ ๋ณด๋
โข
REST์์ ํ๋์ ์์์ JSON, XML, TEXT, RSS๋ฑ ์ฌ๋ฌ ํํ์ Representation์ผ๋ก ๋ํ๋
REST API๋
โข
REST ๊ธฐ๋ฐ์ผ๋ก ์๋น์ค API๋ฅผ ๊ตฌํํ ๊ฒ
REST API ์ค๊ณ ๊ธฐ๋ณธ ๊ท์น
1.
URI๋ ์ ๋ณด์ ์์์ ํํํด์ผ ํจ
โข
์์์ ๋์ฌ๋ณด๋ค๋ ๋ช
์ฌ๋ฅผ, ๋๋ฌธ์๋ณด๋ค๋ ์๋ฌธ์๋ฅผ ์ฌ์ฉ
โข
์์์ ๋ํ๋จผํธ ์ด๋ฆ์ผ๋ก๋ ๋จ์ ๋ช
์ฌ๋ฅผ ์ฌ์ฉ
โข
์์์ ์ปฌ๋ ์
์ด๋ฆ์ผ๋ก๋ ๋ณต์ ๋ช
์ฌ๋ฅผ ์ฌ์ฉ
2.
์์์ ๋ํ ํ์๋ HTTP Method๋ก ํํ
โข
URI์ HTTP Method๊ฐ ๋ค์ด๊ฐ๋ฉด ์๋จ
โข
URI์ ํ์์ ๋ํ ๋์ฌ ํํ์ด ๋ค์ด๊ฐ๋ฉด ์๋จ
โข
๊ฒฝ๋ก ๋ถ๋ถ ์ค ๋ณํ๋ ๋ถ๋ถ์ ์ ์ผํ ๊ฐ์ผ๋ก ๋์ฒด
3.
์ฌ๋์ ๊ตฌ๋ถ์(/)๋ ๊ณ์ธต ๊ด๊ณ๋ฅผ ๋ํ๋
4.
URI ๋ง์ง๋ง ๋ฌธ์๋ก ์ฌ๋์๋ฅผ ํฌํจํ์ง ์์
5.
ํ์ดํ์ URI ๊ฐ๋
์ฑ์ ๋์ด๋๋ฐ ์ฌ์ฉ
6.
ํ์ผํ์ฅ์๋ URI์ ํฌํจํ์ง ์์ (Accept header๋ฅผ ์ฌ์ฉ)
โข
ex) GET /users/1/photo HTTP/1.1 Host: xxxxx
โข
Accept: image/jpg (o)
RESTful API ์ฌ์ฉ
1. Path parameters
โข
๋ฐ์ดํฐ ๋ฑ๋ก ์ POST ๋นผ๊ณ ๋ค ์ฌ์ฉ ๊ฐ๋ฅ
โข
๋ฐ์ดํฐ ๋ฑ๋ก ์ POST ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์ ๋ฐ์ดํฐ ์์ฑ ์ ์ด๋ผ ID๋ฅผ ๊ฐ์ง๊ณ ์์ง ์๊ธฐ ๋๋ฌธ
โข
์ํ๋ ์กฐ๊ฑด์ ๋ฐ์ดํฐ๋ค ํน์ ํ๋์ ๋ฐ์ดํฐ์ ๋ํ ์ ๋ณด๋ฅผ ๋ฐ์์ฌ ๋ ์ ์
โข
ex) GET /users/1
2. Query String
โข
์ข ๋ ๋ณต์กํ ์กฐ๊ฑด์ ์ค์ ์ํ๋ ๊ฒฐ๊ณผ๋ฌผ์ ์ป์ ์ ์์
โข
GET์๋ง ์ฐ์ธ๋ค
โข
filtering, sorting, searching์ ์ ์
โข
ex) GET /producs?offest=0&limit=100
Status Code
โข
์ํฉ์ ๋ง๋ status ์ฝ๋๋ฅผ ์ ์กํด์ฃผ๋ ๊ฒ์ด ์ค์, ์ด๋ค ์ฝ๋๊ฐ ์ด๋ค ์๋ฏธ๋ฅผ ๋ฐ์ํ๋์ง ์์๋ฌ์ผ ํจ