DEV Community

Chan
Chan

Posted on

RESTful API Summary

๐Ÿ“˜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://restcookbook.com

https://en.wikipedia.org/wiki/Representational_state_transfer

Top comments (0)