๐REST์ ๋ป
- ์น ์์์ ๋ ์ปดํจํฐ๊ฐ ํต์ ํ๊ธฐ ์ํ ์ผ๋ จ์ ๊ท์น๋ค์ ์งํฉ
- Representational State Transfer์ ์ค์๋ง
- server๊ฐ ๋ฆฌ์์ค๋ฅผ ๋ํ๋ด๋ ์ ๋ณด(representation of resource),๊ทธ๋ฆฌ๊ณ ๋ฆฌ์์ค์ state๋ฅผ ๋ณํ์ํฌ ์ ์๋ ๋งํฌ๋ฅผ ๋ณด๋ธ๋ค๋ ์ ์์ REST๋ก ๋ถ๋ ๋ค. ๋ค๋ง ๋๋ค์์ ์น์๋น์ค์ ์ ์ฉ๋ RESTful API๋ค์ ๋งํฌ๋ฅผ ๋ณด๋ด์ง๋ ์๋๋ค.
- REST์ ๊ท์น์ ์ค์ํ๋ WEB API๋ฅผ RESTful API๋ผ ๋ถ๋ฅธ๋ค.
- ์ฃผ๋ก HTTP๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ Web App์ ์ฌ์ฉ๋๋ค.
RESTful API๊ฐ ๋๊ธฐ ์ํ ์กฐ๊ฑด
Uniform Interface
- URI(URL)์ ํตํ์ฌ ๋ฆฌ์์ค๋ฅผ ํํํ๋ค.
- ๋ฆฌ์์ค ์์ /์ญ์ ์์ฒญ์ ์ถฉ๋ถํ ๋ฉํ๋ฐ์ดํฐ๊ฐ ํฌํจ๋์ด์ผ ํ๋ค.
- HATEOAS: ์๋ฒ๋ก๋ถํฐ ์ ๊ณต๋๋ ๋งํฌ๋ฅผ ํตํด ํด๋ผ์ด์ธํธ๋ ํ์ํ ๋ฆฌ์์ค๋ฅผ ๋ชจ๋ ์ ๊ทผํ ์ ์์ด์ผ ํ๋ค.
- ๋ฉ์์ง๋ ํด๋น ๋ฉ์์ง๋ฅผ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ์ง์ ๋ํ ์ถฉ๋ถํ ์ค๋ช ์ ์ ๊ณตํด์ผ ํ๋ค.
Client-Server Architecture
ํด๋ผ์ด์ธํธ๊ฐ UI/UX๋ฅผ ๋ด๋นํ๊ณ , ์๋ฒ๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ด๋นํ๋ค.
Statelessness
์๋ฒ๋ ํด๋ผ์ด์ธํธ๋ฅผ ์ํด ์์ฒญ ์ฌ์ด์ ์ถ๊ฐ์ ์ธ ์ ๋ณด(์ํ)๋ฅผ ์ ์งํ๊ณ ์์ผ๋ฉด ์ ๋๋ค.
Cacheability
ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ด๋ ์์ฒญ์ safe method๊ฐ ์ฌ์ฉ์ด ๋๋ค๋ฉด ์๋ฒ๋reverse proxy๋ฅผ ๋ฐฐ์นํ์ฌ ์บ์ฑ์ด ๊ฐ๋ฅํ๋ค.
Layered System
ํด๋ผ์ด์ธํธ์ ์ข ๋จ ์๋ฒ ์ฌ์ด์ ํต์ ์ ํ๋ก์, ๋ก๋๋ฐธ๋ฐ์, ์ํธํ๋ฅผ ์ํ ์ค๊ฐ์ ์๋ฒ๊ฐ ๊ฐ์ ํ๋ฉด ์ ๋๋ค.
Code on demand(optional)
์๋ฒ๋ ์ํฉ์ ๋ฐ๋ผ ํด๋ผ์ด์ธํธ์๊ฒ executable codes๋ฅผ ๋ณด๋ผ ์ ์๋ค.
Idempotence
- idempotent method๋ ์๋ฌด๋ฆฌ ์ฌ๋ฌ๋ฒ ํธ์ถ๋๋๋ผ๋ ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ง๋ค.
- ๋์ผํ ๊ฒฐ๊ณผ๋ resource representation์ด ๋์ผํ๋ค๋ ๋ป์ด๋ค.
- GET, PUT, DELETE๋ ๋ชจ๋ idempotent methods์ด๋ค.
๐ Versioning RESTful API
๊ฐ์ฅ ๋ํ์ ์ธ ๋ฐฉ๋ฒ์ version number๋ฅผ url์ ํฌํจ์ํค๋ ๊ฒ์ด๋ค.
โ Accept-Language/Accept Header
HTTP request์ accept-language์ ๋ช ์๋ ๋๋ก resource๋ฅผ ๋ณด๋ผ ์ ์๋ค๋ฉด, status code 406๋ฅผ ๋ฐํํด์ผํ๋ค.
์ฐธ๊ณ ๋ฌธํ:
https://en.wikipedia.org/wiki/Representational_state_transfer