

REST(Representational State Transfer) - ์์์ ์ด๋ฆ์ผ๋ก ๊ตฌ๋ถํด ์์์ ์ํ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ์ํํธ์จ์ด ์ํคํ ์ณ
HTTP URI(Uniform Resource Identifier)๋ฅผ ํตํด ์์์ ๋ช ์
HTTP Method๋ฅผ ํตํด ํด๋น ์์์ ๋ํ CRUD Operation์ ์ ์ฉํ๋ ๊ฒ์ ์๋ฏธ
๐ก CRUD Operation์ด๋?- Create : ์์ฑ POST- Read : ์กฐํ GET- Update : ์์ PUT- Delete : ์ญ์ DELETE
1) ์์(Resource) - HTTP URI
2) ํ์(Verb) - HTTP Method
3) ํํ(Representation)
1) ๊ท ์ผ ์ธํฐํ์ด์ค(Uniform Interface)
2) ๋ฌด์ํ(Stateless)
REST๋ HTTP Protocol๊ณผ ์ญ์ ๋ฌด์ํ์ฑ์ ๊ฐ๋๋ค.
์๋ฒ๋ ์ํ ์ ๋ณด๋ฅผ ๊ธฐ์ตํ ํ์ ์์ด ํด๋ผ์ด์ธํธ์์ ๋ค์ด์จ ์์ฒญ์ ๋ํด์๋ง ์ฒ๋ฆฌ๋ฅผ ํ๊ณ ์๋ต์ ํ๋ค.
3) ๊ณ์ธต ๊ตฌ์กฐ(Layer System)
Client๋ REST API Server๋ง ํธ์ถํ๋ค.
REST Server๋ ๋ค์ค ๊ณ์ธต์ผ๋ก ๊ตฌ์ฑ๋ ์ ์๋๋ฐ ์ด๋ Client๋ ์ด๋ค Server์ ํต์ ํ๋์ง ์ ์ ์๋ค.
4) ์บ์ ๊ฐ๋ฅ(Cacheable)
5) Server-Client

API(Application Programming Interface) - ๋ค๋ฅธ ์ํํธ์จ์ด ์์คํ ๊ณผ ํต์ ํ๊ธฐ ์ํ ๊ท์น
๐ฅ REST API๋ REST์ ํน์ง์ ๊ธฐ๋ฐ์ผ๋ก ์๋น์ค API๋ฅผ ๊ตฌํํ ๊ฒ
1) URI๋ ์ ๋ณด์ ์์์ ํํํด์ผ ํ๋ค.
2) ์์์ ๋ํ ํ์๋ HTTP Method(POST, GET, PUT, DELETE)๋ก ํํํ๋ค.
URI๋ ๋ช
์ฌ๋ฅผ ์ฌ์ฉํ๋ค.
GET /members (O)
GET /delete (X)
/๋ฅผ ์ฌ์ฉํด์ ๊ณ์ธต ๊ด๊ณ๋ฅผ ํํํ๋ค.
GET /members/list (O)
URI์ ๋ง์ง๋ง ๋ฌธ์์ /๋ฅผ ํฌํจํ์ง ์๋๋ค.
GET /members/1/ (X)
GET /members/1 (O)
_๋ฅผ ์ฌ์ฉํ์ง ์๊ณ , -๋ฅผ ์ฌ์ฉํ๋ค.
GET /members/list_1 (X)
GET /members/list-1 (O)
URI๋ ์๋ฌธ์๋ก๋ง ๊ตฌ์ฑํ๋ค.
GET /Members/List (X)
GET /members/list (O)
HTTP ์๋ต ์ํ ์ฝ๋๋ฅผ ์ฌ์ฉํ๋ค.
EX) HTTP Status 200 (Ok)
HTTP Status 404 (Not Found)
ํ์ผ ํ์ฅ์๋ URI์ ํฌํจ์ํค์ง ์๋๋ค.(Accept-header๋ฅผ ์ฌ์ฉํ๋ค.)
http://example.com/members/list/photo.png (X)
http://example.com/members/list/photo (O)

RESTful๋ REST์ ์์น์ ๋ฐ๋ฅด๋ ์์คํ ์ ์ผ์ปท๋ ๋จ์ด๋ก ์ฌ์ฉ๋๋ค.
์ดํดํ๊ธฐ ์ฝ๊ณ ์ฌ์ฉํ๊ธฐ ์ฌ์ด REST API๋ฅผ ๋ง๋๋ ๊ฒ์ด RESTful์ ๋ชฉ์ ์ด๋ค.
์ด๋ ์ฑ๋ฅ ํฅ์์ ์ด์ ์ ๋ง์ถ ๊ฒ์ด ์๋๋ผ ์ดํด๋ ๋ฐ ํธํ์ฑ์ ์ด์ ์ ๋ง์ถ ๊ฒ์ด๋ผ ํญ์ RESTfulํ API๋ฅผ ๊ณ ์งํ ํ์๋ ์๋ค.
CRUD ๊ธฐ๋ฅ์ ๋ชจ๋ POST๋ก๋ง ์ฒ๋ฆฌํ๋ API
REST API์ ์ค๊ณ ๊ท์น์ ์ด๊ธฐ๋ ๊ฒฝ์ฐ