์ด ๋ฌธ์„œ์˜ ์›๋ณธ์€ ์™ธ๋ถ€ ์œ„ํ‚ค์—์„œ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค.
1. ๊ฐœ์š”2. ์กฐ๊ฑด3. ๊ตฌ์„ฑ์š”์†Œ
3.1. ์ž์›(Resource)3.2. ๋ฉ”์†Œ๋“œ(Method)3.3. ๋ฉ”์‹œ์ง€(Message)

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 ๊ตฌํ˜„ ์‚ฌ๋ก€

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)

3.3. ๋ฉ”์‹œ์ง€(Message)[ํŽธ์ง‘]