RESTful API
RESTful API
REST์ ๊ธฐ๋ณธ ์์น์ ์ฑ์คํ ์งํจ API
REST ๋?
: REpresenrational State Transfer ( + ful ~ํ ) ์ ์ค์๋ง๋ก ์ฆ, ์น์ ์ํ ๋คํธ์ํฌ ๊ธฐ๋ฐ ์ํคํ ์ณ ์คํ์ผ์ ๋๋ค.
๋คํธ์ํฌ ๊ธฐ๋ฐ ์ํคํ ์ณ ๊ณ ๋ ค์ฌํญ์๋ ์ฑ๋ฅ, ๊ท๋ชจํ์ฅ์ฑ(Scalability), ๋จ์์ฑ, ์์ ์ฉ์ด์ฑ(Modifiability), ๊ฐ์์ฑ(Visibility), ์ด์์ฑ(Portability), ์ ๋ขฐ์ฑ(Reliability) ์ด ์์ต๋๋ค.
REST๋ ํ๋์ Architecture๋ก Resource Oriented Architecture ์ฆ, " API ์ค๊ณ ์ค์ฌ์ ์์์ด ์๊ณ HTTP Method๋ฅผ ํตํด ์์์ ์ฒ๋ฆฌํ๋๋ก ์ค๊ณํ๋ ๊ฒ" ์ ๋๋ค.
๋ฐ๋ผ์ REST์ ๊ธฐ๋ณธ ์์น์ ์ฑ์คํ ์งํจ ์๋น์ค ๋์์ธ์ “RESTful ํ๋ค.” ๋ผ๊ณ ํํ ํํํ๋ ๊ฒ์ด์ฃ .
REST์ ๊ธฐ๋ณธ ์์น
1) Uniform (์ ๋ํผ ์ธํฐํ์ด์ค)
Uniform Interface๋ URI๋ก ์ง์ ํ ๋ฆฌ์์ค์ ๋ํ ์กฐ์์ ํต์ผ๋๊ณ ํ์ ์ ์ธ ์ธํฐํ์ด์ค๋ก ์ํํ๋ ์ํคํ ์ฒ ์คํ์ผ์ ๋งํฉ๋๋ค.
2) Stateless (๋ฌด์ํ์ฑ)
REST๋ ๋ฌด์ํ์ฑ ์ฑ๊ฒฉ์ ๊ฐ์ต๋๋ค. ๋ค์ ๋งํด ์์ ์ ์ํ ์ํ์ ๋ณด๋ฅผ ๋ฐ๋ก ์ ์ฅํ๊ณ ๊ด๋ฆฌํ์ง ์์ต๋๋ค. ์ธ์ ์ ๋ณด๋ ์ฟ ํค์ ๋ณด๋ฅผ ๋ณ๋๋ก ์ ์ฅํ๊ณ ๊ด๋ฆฌํ์ง ์๊ธฐ ๋๋ฌธ์ API ์๋ฒ๋ ๋ค์ด์ค๋ ์์ฒญ๋ง์ ๋จ์ํ ์ฒ๋ฆฌํ๋ฉด ๋ฉ๋๋ค. ๋๋ฌธ์ ์๋น์ค์ ์์ ๋๊ฐ ๋์์ง๊ณ ์๋ฒ์์ ๋ถํ์ํ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ์ง ์์์ผ๋ก์จ ๊ตฌํ์ด ๋จ์ํด์ง๋๋ค.
3) Cacheable (์บ์ ๊ฐ๋ฅ)
REST์ ๊ฐ์ฅ ํฐ ํน์ง ์ค ํ๋๋ HTTP๋ผ๋ ๊ธฐ์กด ์นํ์ค์ ๊ทธ๋๋ก ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์, ์น์์ ์ฌ์ฉํ๋ ๊ธฐ์กด ์ธํ๋ผ๋ฅผ ๊ทธ๋๋ก ํ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค. ๋ฐ๋ผ์ HTTP๊ฐ ๊ฐ์ง ์บ์ฑ ๊ธฐ๋ฅ์ด ์ ์ฉ ๊ฐ๋ฅํฉ๋๋ค. HTTP ํ๋กํ ์ฝ ํ์ค์์ ์ฌ์ฉํ๋ Last-Modifiedํ๊ทธ๋ E-Tag๋ฅผ ์ด์ฉํ๋ฉด ์บ์ฑ ๊ตฌํ์ด ๊ฐ๋ฅํฉ๋๋ค.
4) Self-descriptiveness (์์ฒด ํํ ๊ตฌ์กฐ)
REST์ ๋ ๋ค๋ฅธ ํฐ ํน์ง ์ค ํ๋๋ REST API ๋ฉ์์ง๋ง ๋ณด๊ณ ๋ ์ด๋ฅผ ์ฝ๊ฒ ์ดํด ํ ์ ์๋ ์์ฒด ํํ ๊ตฌ์กฐ๋ก ๋์ด ์๋ค๋ ๊ฒ์ ๋๋ค.
5) Client - Server ๊ตฌ์กฐ
REST ์๋ฒ๋ API ์ ๊ณต, ํด๋ผ์ด์ธํธ๋ ์ฌ์ฉ์ ์ธ์ฆ์ด๋ ์ปจํ ์คํธ(์ธ์ , ๋ก๊ทธ์ธ ์ ๋ณด)๋ฑ์ ์ง์ ๊ด๋ฆฌํ๋ ๊ตฌ์กฐ๋ก ๊ฐ๊ฐ์ ์ญํ ์ด ํ์คํ ๊ตฌ๋ถ๋๊ธฐ ๋๋ฌธ์ ํด๋ผ์ด์ธํธ์ ์๋ฒ์์ ๊ฐ๋ฐํด์ผ ํ ๋ด์ฉ์ด ๋ช ํํด์ง๊ณ ์๋ก๊ฐ ์์กด์ฑ์ด ์ค์ด๋ค๊ฒ ๋ฉ๋๋ค.
6) ๊ณ์ธตํ ๊ตฌ์กฐ
REST ์๋ฒ๋ ๋ค์ค ๊ณ์ธต์ผ๋ก ๊ตฌ์ฑ๋ ์ ์์ผ๋ฉฐ ๋ณด์, ๋ก๋ ๋ฐธ๋ฐ์ฑ, ์ํธํ ๊ณ์ธต์ ์ถ๊ฐํด ๊ตฌ์กฐ์์ ์ ์ฐ์ฑ์ ๋ ์ ์๊ณ PROXY, ๊ฒ์ดํธ์จ์ด ๊ฐ์ ๋คํธ์ํฌ ๊ธฐ๋ฐ์ ์ค๊ฐ๋งค์ฒด๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ํฉ๋๋ค.
RESTful API ๊ฐ์ด๋
1. URI๋ ์ ๋ณด์ ์์์ ํํํ๊ณ ํ์๋ HTTP Method๋ก ํํํ๋ค.
- URI๋ ์ ๋ณด์ ์์์ ํํํด์ผํฉ๋๋ค. ์ด ๋ ๋ฆฌ์์ค๋ช ์ ๋ช ์ฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ์์์ ๋ํ ํ์๋ HTTP Method๋ก ํํํฉ๋๋ค.
HTTP Method
HTTP ์๋ต์ฝ๋
2. Message๋ Header์ Body๋ฅผ ๋ช ํํ๊ฒ ๋ถ๋ฆฌํด์ ์ฌ์ฉํฉ๋๋ค.
- Body : Entity์ ๋ํ ๋ด์ฉ
- Header : API ๋ฒ์ ์ ๋ณด, MIME ํ์
3. API ๋ฒ์ ์ ๊ด๋ฆฌํฉ๋๋ค.
4. Server์ Client๊ฐ ๊ฐ์ ๋ฐฉ์์ ์ฌ์ฉํด์ ์์ฒญํ๋๋ก ํ์์ ํ๋๋ก ํตํฉํฉ๋๋ค.
ํ์ต์ ๋ง์ ๋์์ด ๋ ๋ธ๋ก๊ทธ ๋งํฌ๋ฅผ ์ฐธ์กฐํ์ต๋๋ค. ๐
์ฐธ์กฐ ๋ฐ ์ถ์ฒ
REST API ์ ๋๋ก ์๊ณ ์ฌ์ฉํ๊ธฐ
๋ฐ์ ๊ฐ๋ฐ์๋ค์ ์ํ REST ๋ ผ๋ฌธ ์์ฝ
REST ์ํคํ ์ฒ๋ฅผ ํ๋ฅญํ๊ฒ ์ ์ฉํ๊ธฐ ์ํ ๋ช ๊ฐ์ง ๋์์ธ ํ