์ด ๋ฌธ์์ ์๋ณธ์ ์ธ๋ถ ์ํค์์ ๊ฐ์ ธ์์ต๋๋ค.
1. ๊ฐ์[ํธ์ง]
REST(Representational State Transfer)๋ ๋ก์ด ํ๋ฉ(Roy Fielding)์ด ์์ ์ 2000๋
๋ฐ์ฌ ํ์ ๋
ผ๋ฌธ์ ์ ์ํ ์น ๊ธฐ๋ฐ ์ํคํ
์ณ๋ค. API ์ชฝ์์ ๊ต์ฅํ ๋ง์ด ์ฐ์ธ๋ค.
Google ์ ํฌํจํ์ฌ, Facebook, ํธ์ํฐ, Naver, ์นด์นด์คํก ๋ฑ IT ํ์ฌ๋ผ๋ฉด ๊ฐ ํ์ฌ์ ์๋น์ค๋ฅผ ํ์ฉํ ์ ์๋ REST API๋ฅผ ์ง์ํ๋ค. REST API๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์๋ฒ์ ์ธ์ฆ์ ๋ฐ์์ผ ํ๋ฉฐ OAuth 2.0(๋๋ OpenID)์ ๋ํ์ ์ผ๋ก ์ฌ์ฉํ๋ค. ์๋๋ ๊ตฌ๊ธ API๋ฅผ ์ฌ์ฉํ๋ OAutho 2.0 ๋ฐฉ๋ฒ์ ๋ค์ํ๊ฒ ์กด์ฌํ๋ฉฐ ๋ํ์ ์ผ๋ก ์๋์ ๊ฐ์ด ๊ตฌ๋ถํ ์ ์๋ค#.
1) Web server applications Gmail API ๊ตฌํ ์ฌ๋ก
2) Client-side (JavaScript) applications
3) Applications on limited-input devices
4) Service accounts Calendar API ๊ตฌํ ์ฌ๋ก
Google ์ ํฌํจํ์ฌ, Facebook, ํธ์ํฐ, Naver, ์นด์นด์คํก ๋ฑ IT ํ์ฌ๋ผ๋ฉด ๊ฐ ํ์ฌ์ ์๋น์ค๋ฅผ ํ์ฉํ ์ ์๋ REST API๋ฅผ ์ง์ํ๋ค. REST API๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์๋ฒ์ ์ธ์ฆ์ ๋ฐ์์ผ ํ๋ฉฐ OAuth 2.0(๋๋ OpenID)์ ๋ํ์ ์ผ๋ก ์ฌ์ฉํ๋ค. ์๋๋ ๊ตฌ๊ธ API๋ฅผ ์ฌ์ฉํ๋ OAutho 2.0 ๋ฐฉ๋ฒ์ ๋ค์ํ๊ฒ ์กด์ฌํ๋ฉฐ ๋ํ์ ์ผ๋ก ์๋์ ๊ฐ์ด ๊ตฌ๋ถํ ์ ์๋ค#.
1) Web server applications Gmail API ๊ตฌํ ์ฌ๋ก
2) Client-side (JavaScript) applications
3) Applications on limited-input devices
4) Service accounts Calendar API ๊ตฌํ ์ฌ๋ก
2. ์กฐ๊ฑด[ํธ์ง]
- ํด๋ผ์ด์ธํธ์ ์๋ฒ์ ๋ถ๋ฆฌ
- ๋ฌด์ํ(Stateless)
- ์บ์ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํด์ผ ํจ
- ์์คํ ์ด ๊ณ์ธตํ(Layered) ๋์ด์์ด์ผ ํจ
- ์ผ๊ด์ฑ ์๋ ์ธํฐํ์ด์ค
3. ๊ตฌ์ฑ์์[ํธ์ง]
3.1. ์์(Resource)[ํธ์ง]
๋๋ฌด์ํค์์ ๋ช๊ฐ์ง๋ฅผ ์๋ก ๋ค์๋ฉด,
URI | ์๋ฏธ |
https://namu.wiki/edit/A | A ๋ฌธ์ ํธ์ง |
https://namu.wiki/history/A | A ๋ฌธ์์ ๋ณ๊ฒฝ๊ธฐ๋ก ๋ณด๊ธฐ |
https://namu.wiki/move/A | A ๋ฌธ์์ ํ์ ์ด ๋ณ๊ฒฝ |
https://namu.wiki/delete/A | A ๋ฌธ์ ์ญ์ |
https://namu.wiki/xref/A | A ๋ฌธ์์ ์ญ๋งํฌ |
์ฌ๊ธฐ์ /๋ ๊ณ์ธต ๊ด๊ณ๋ฅผ ๋ํ๋ธ๋ค.
3.2. ๋ฉ์๋(Method)[ํธ์ง]
HTTP ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค.
POST | ์์ ์์ฑ(Create) |
GET | ์์ ์กฐํ(Read) |
PUT | ์์ ์์ (Update) |
DELETE | ์์ ์ญ์ (Delete) |