Skip to content

Latest commit

ย 

History

History
182 lines (104 loc) ยท 9.04 KB

REST_API_RESTFUL.md

File metadata and controls

182 lines (104 loc) ยท 9.04 KB

REST API , REST FUL

REST API

REST์˜ ์›๋ฆฌ๋ฅผ ๋”ฐ๋ฅด๋Š” API

์ตœ๊ทผ OpenAPI(๋ˆ„๊ตฌ๋‚˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ณต๊ฐœ๋œ API: ๊ตฌ๊ธ€ ๋งต, ๊ณต๊ณต ๋ฐ์ดํ„ฐ ๋“ฑ),
๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค(ํ•˜๋‚˜์˜ ํฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ž‘์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ์ชผ๊ฐœ์–ด
 ๋ณ€๊ฒฝ๊ณผ ์กฐํ•ฉ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ๋งŒ๋“  ์•„ํ‚คํ…์ฒ˜) ๋“ฑ์„ ์ œ๊ณตํ•˜๋Š” ์—…์ฒด ๋Œ€๋ถ€๋ถ„์€ REST API๋ฅผ ์ œ๊ณตํ•œ๋‹ค

API(Application Programming Interface)๋ž€

  • ๋ฐ์ดํ„ฐ์™€ ๊ธฐ๋Šฅ์˜ ์ง‘ํ•ฉ์„ ์ œ๊ณตํ•˜์—ฌ ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ๊ฐ„ ์ƒํ˜ธ์ž‘์šฉ์„ ์ด‰์ง„ํ•˜๋ฉฐ, ์„œ๋กœ ์ •๋ณด๋ฅผ ๊ตํ™˜๊ฐ€๋Šฅ ํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ

ํŠน์ง•

  • ์‚ฌ๋‚ด ์‹œ์Šคํ…œ๋“ค๋„ REST ๊ธฐ๋ฐ˜์œผ๋กœ ์‹œ์Šคํ…œ์„ ๋ถ„์‚ฐํ•ด ํ™•์žฅ์„ฑ๊ณผ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์—ฌ ์œ ์ง€๋ณด์ˆ˜ ๋ฐ ์šด์šฉ์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • REST๋Š” HTTP ํ‘œ์ค€์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌํ˜„ํ•˜๋ฏ€๋กœ, HTTP๋ฅผ ์ง€์›ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ ์–ธ์–ด๋กœ ํด๋ผ์ด์–ธํŠธ, ์„œ๋ฒ„๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ฆ‰, REST API๋ฅผ ์ œ์ž‘ํ•˜๋ฉด ๋ธํŒŒ์ด ํด๋ผ์ด์–ธํŠธ ๋ฟ ์•„๋‹ˆ๋ผ, ์ž๋ฐ”, C#, ์›น ๋“ฑ์„ ์ด์šฉํ•ด ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ œ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค.




**REST API URI ์„ค๊ณ„ ๊ทœ์น™**



1๏ธโƒฃURI์— ํ›„ํ–‰ ์Šฌ๋ž˜์‹œ(/ => ๋งˆ์ง€๋ง‰์— ๋ถ™์ด๋Š” ์Šฌ๋ž˜์‹œ) ๋Š” ํฌํ•จ๋˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ˜ผ๋ž€์„ ์ค„์ˆ˜ ์žˆ๊ณ  ์˜๋ฏธ๊ฐ€ ์—†๋Š” ํ›„ํ–‰ ์Šฌ๋ž˜์‹œ๋ฅผ URI ๊ฒฝ๋กœ์˜ ๋งˆ์ง€๋ง‰์—ย  ํฌํ•จ์‹œํ‚ค์ง€ ์•Š๋Š” ๊ฒƒ์€ ๋”ฐ๋ผ์•ผ ํ•  ๊ทœ์น™๋“ค ์ค‘ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์ค‘ ํ•˜๋‚˜ ์ž…๋‹ˆ๋‹ค. REST API๋Š” ํ›„ํ–‰ ์Šฌ๋ž˜์‹œ๋ฅผ ๊ฐ€์ง€์ง€ ์•Š์•„์•ผ ํ•˜๊ณ  client๋“ค์—๊ฒŒ ์ œ๊ณตํ•˜๋Š” ๋งํฌ์— ํ›„ํ–‰ ์Šฌ๋ž˜์‹œ๋Š” ํฌํ•จ๋˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋งŽ์€ ์›น component๋“ค๊ณผ framework๋“ค์€ ์•„๋ž˜ ๋‘๊ฐœ์˜ URI๋ฅผ ๊ฐ™๊ฒŒ ์ธ์‹ํ•ฉ๋‹ˆ๋‹ค :

**http://api.canvas.com/shapes/**

**http://api.canvas.com/shapes**

๊ทธ๋Ÿฌ๋‚˜ URI์˜ ๋ชจ๋“  ๊ธ€์ž๋“ค์€ resource๋“ค์˜ ๊ณ ์œ ํ•œ ๊ตฌ๋ณ„์ž๋กœ ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค.

๋‘๊ฐœ์˜ ๋‹ค๋ฅธ URI๋Š” ๋‘๊ฐœ์˜ ๋‹ค๋ฅธ resource๋“ค์„ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค. ๋งŒ์•ฝ URI๊ฐ€ ๋‹ค๋ฅด๋‹ค๋ฉด resource๋“ค๋„ ๋‹ค๋ฅธ๊ฒƒ์ž…๋‹ˆ๋‹ค, ๊ทธ ๋ฐ˜๋Œ€๋˜ํ•œ ๋งˆ์ฐฌ๊ฐ€์ง€ ๊ตฌ์š”. ๊ทธ๋Ÿฌ๋ฏ€๋กœ REST API๋Š” ๊นจ๋—ํ•œ URI๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์†Œํ†ตํ•ด์•ผ ํ•˜๋ฉฐ resource๋ฅผ ๋ชจํ˜ธํ•˜๊ฒŒ ์‹๋ณ„ํ•˜๋ ค๋Š” client์˜ ์‹œ๋„๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋” ๋„ˆ๊ทธ๋Ÿฌ์šด API ๋“ค์€ ํ›„ํ–‰ ์Šฌ๋ž˜์‹œ ์—†์ด client๋“ค์„ URI๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ์‹œํ‚ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค.(301์„ ๋ฐ˜ํ™˜ํ• ์ˆ˜๋„ ์žˆ๋‹ค -"์˜์›ํžˆ ์ด๋™" ์ž์›๋“ค์„ ์žฌ์œ„์น˜ ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜์–ด์ง€๊ณค ํ•œ๋‹ค.)


2๏ธโƒฃ์Šฌ๋ž˜์‹œ(/)๋Š” ๊ณ„์ธต๊ด€๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š”๋ฐ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์Šฌ๋ž˜์‹œ(/) ๋ฌธ์ž๋Š” URI์˜ ๊ฒฝ๋กœ ๋ถ€๋ถ„์—์„œ resource๋“ค ๊ฐ„์˜ ๊ณ„์ธต ๊ด€๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š”๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

For example:ย **[http://api.canvas.com/shapes/polygons/quadrilaterals/squares](http://api.canvas.com/shapes/polygons/quadrilaterals/squares)**



3๏ธโƒฃURI์˜ ๊ฐ€๋…์„ฑ์„ ์œ„ํ•ด ํ•˜์ดํ”ˆ(-)์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

URI๋ฅผ ์‚ฌ๋žŒ์—๊ฒŒ ์‰ฝ๊ฒŒ ์ธ์‹๋˜๊ณ  ํ•ด์„๋˜๊ฒŒ ํ•˜๊ณ , ๊ธด ๊ฒฝ๋กœ ์š”์†Œ ์ด๋ฆ„์˜ ๊ฐ€๋…์„ฑ์„ ์ฆ๊ฐ€ ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ํ•˜์ดํ”ˆ(-)์„ ์‚ฌ์šฉํ•˜์„ธ์š”. ์˜์–ด๋กœ ๊ณต๋ฐฑ์ด๋‚˜ ํ•˜์ดํ”ˆ์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ URI์— ํ•˜์ดํ”ˆ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

For example:ย **[http://api.example.com/blogs/guy-levin/posts/this-is-my-first-post](http://api.example.com/blogs/guy-levin/posts/this-is-my-first-post)**



4๏ธโƒฃURI์—์„œ ์–ธ๋”๋ฐ”(_)๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ…์ŠคํŠธ viewer ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜๋“ค(๋ธŒ๋ผ์šฐ์ €, ์—๋””ํ„ฐ, ๋“ฑ๋“ฑ)์€ ์ข…์ข… URI์— ํด๋ฆญํ• ์ˆ˜ ์žˆ๋‹ค๋Š” ์‹œ๊ฐ์  ํžŒํŠธ๋ฅผ ์ฃผ๊ธฐ์œ„ํ•ด ๋ฐ‘์ค„์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํฐํŠธ์— ๋”ฐ๋ผ ์–ธ๋”๋ฐ”(_) ๋ฌธ์ž๋Š” ๋ฐ‘์ค„๋กœ ์ธํ•ด ๋ถ€๋ถ„์ ์œผ๋กœ ๋ณด์ด์ง€ ์•Š๊ฑฐ๋‚˜ ์™„์ „ํžˆ ๊ฐ€๋ ค์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ํ˜ผ๋ž€์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ์–ธ๋”๋ฐ”(_) ๋Œ€์‹  ํ•˜์ดํ”ˆ(-)์„ ์‚ฌ์šฉํ•˜์„ธ์š”



5๏ธโƒฃURI ๊ฒฝ๋กœ์—์„œ๋Š” ์†Œ๋ฌธ์ž๋ฅผ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.

๋Œ€๋ฌธ์ž๊ฐ€ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ URI ๊ฒฝ๋กœ์—์„œ๋Š” ์†Œ๋ฌธ์ž๋ฅผ ์„ ํ˜ธํ•˜๋Š” ๊ฒƒ์ด ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

RFC 3986์€ URI๋ฅผ scheme ํ˜น์€ host component๋ฅผ ์ œ์™ธํ•˜๊ณ  ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ •์˜ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

For example:

1)ย **http://api.example.com/my-folder/my-doc**

2)ย **[HTTP://API.EXAMPLE.COM/my-folder/my-doc](http://api.example.com/my-folder/my-doc)**

์œ„์˜ uri๋Š” ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. RFC 3986์—์„œ๋Š” 1๋ฒˆ URI์™€ ๊ฐ™์€ ๊ฒƒ์œผ๋กœ ์ธ์‹ํ•ฉ๋‹ˆ๋‹ค.

3)ย **http://api.example.com/My-Folder/my-doc**

์ด URI๋Š” 1๋ฒˆ, 2๋ฒˆ๊ณผ ๊ฐ™์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ถˆํ•„์š”ํ•œ ํ˜ผ๋ž€์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.



6๏ธโƒฃURI์— ํŒŒ์ผ ํ™•์žฅ์ž๋Š” ํฌํ•จ๋˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์›น์ƒ์—์„œ ๋งˆ์นจํ‘œ(.) ๋ฌธ์ž๋Š” URI์—์„œ ํŒŒ์ผ์˜ ์ด๋ฆ„๊ณผ ํ™•์žฅ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š”๋ฐ ํ”ํžˆ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. REST API๋Š” ๋ฉ”์‹œ์ง€๋“ค์˜ ๊ฐ์ฒด body๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์œ„ํ•ด URI์— ์ž„์˜์˜ ํŒŒ์ผ ํ™•์žฅ์ž๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์‹  body์˜ ๋‚ด์šฉ์ด ์–ด๋–ป๊ฒŒ ํ๋ฅด๋Š”์ง€ ๊ฒฐ์ •ํ•˜๋Š” Content-Type header๋ฅผ ํ†ตํ•ด ์ „๋‹ฌ๋˜๋Š” media-type์— ์˜์กดํ•˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

**http://api.college.com/students/3248234/courses/2005/fall.json**

**http://api.college.com/students/3248234/courses/2005/fall**

ํŒŒ์ผ ํ™•์žฅ์ž๋Š” format ์„ ํ˜ธ๋ฅผ ๋‚˜ํƒ€๋‚ด๊ธฐ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋ฉด ์•ˆ๋ฉ๋‹ˆ๋‹ค.

REST API client๋“ค์€ HTTP๊ฐ€ ์ œ๊ณตํ•˜๋Š” ํ˜•์‹ ์„ ํƒ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ธ Accpet request ํ—ค๋”๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ„๋‹จํ•œ link๋“ค๊ณผ ์‰ฌ์šด ๋””๋ฒ„๊น…์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด REST API๋Š” query parameter๋ฅผ ํ†ตํ•ด ๋ฏธ๋””์–ด ํƒ€์ž… ์„ ํƒ์„ ์ง€์›ํ• ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.



7๏ธโƒฃ๋งˆ์ง€๋ง‰ ๋ถ€๋ถ„์€ ๋‹จ์ˆ˜ ๋˜๋Š” ๋ณต์ˆ˜ํ˜•์ด์—ฌ์•ผ ํ• ๊นŒ์š”? (๋ณต์ˆ˜ํ˜•์„ ์‚ฌ์šฉํ•˜๋ผ)

๊ฐ„๋‹จํ•˜๊ฒŒ ์œ ์ง€ํ•˜๋ผ๋Š” ๊ทœ์น™์€ ์ด๊ณณ์—๋„ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋น„๋ก ๊ฐ์ž ๋‚ด์žฌํ™”๋œ ๋ฌธ๋ฒ•๊ทœ์น™์ด single instance๋‚˜ resource๋ฅผ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด ๋ณต์ˆ˜ํ˜•์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ํ‹€๋ ธ๋‹ค๊ณ  ํ• ์ง€๋ผ๋„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์  ์ •๋‹ต์€ URI ํ˜•์‹์—์„œ ํ•ญ์ƒ ๋ณต์ˆ˜ํ˜•์„ ์‚ฌ์šฉํ•˜๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ถˆ๊ทœ์น™ ๋ณต์ˆ˜ํ˜•(person/people, goose/geese)๋“ค์€ ๋‹ค๋ฃจ์ง€ ์•Š๋Š”๊ฒƒ์ด API ์‚ฌ์šฉ์ž๋“ค์˜ ์ƒํ™œ์„ ๋” ์ข‹๊ณ  API ์ œ๊ณต์ž๋“ค์ด ๋” ์‰ฝ๊ฒŒ ์ˆ˜ํ–‰ํ• ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์–ด ์ค๋‹ˆ๋‹ค.(๋Œ€๋ถ€๋ถ„์˜ ํ˜„๋Œ€ ํ”„๋ ˆ์ž„์›Œํฌ๋“ค์€ /students์™€ /students/3248234๋ฅผ ๊ฐ™์€ ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ๋‹ค๋ฃน๋‹ˆ๋‹ค.)

๊ทธ๋Ÿฐ๋ฐ ๊ด€๊ณ„๋“ค์€ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฃจ์–ด์•ผ ํ• ๊นŒ์š”? ๊ด€๊ณ„๊ฐ€ ๋‹ค๋ฅธ ์ž์› ๋‚ด์—์„œ๋งŒ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ RESTful ์›์น™์€ ์œ ์šฉํ•œ ์›์น™์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ๋ฅผ ํ•œ๋ฒˆ ์‚ดํŽด๋ณผ๊ฒŒ์š”. ํ•œ ํ•™์ƒ์ด ๋ณต์ˆ˜๊ฐœ์˜ ๊ณผ๋ชฉ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ณผ๋ชฉ๋“ค์€ /studensts์˜ ๋ ๋ถ€๋ถ„์— ์œ„์น˜ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

**[http://api.college.com/students/3248234/courses](http://api.college.com/students/3248234/courses)**
id 3248234๋ฅผ ๊ฐ€์ง„ ํ•™์ƒ์ด ๋ฐฐ์šด ๋ชจ๋“  ๊ณผ๋ชฉ๋“ค์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

**[http://api.college.com/students/3248234/courses/physics](http://api.college.com/students/3248234/courses/physics)**ย 
 id 3248234๋ฅผ ๊ฐ€์ง„ ํ•™์ƒ์ด ๋ฐฐ์šด ๋ฌผ๋ฆฌํ•™ ๊ณผ๋ชฉ๋“ค์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.



โ—Conclusion โ—

REST API ์„œ๋น„์Šค๋ฅผ ์„ค๊ณ„ํ• ๋•Œ URI์— ๋‚˜ํƒ€๋‚ด์–ด์ง€๋Š” resource๋“ค์— ์ง‘์ค‘์„ ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์„œ๋น„์Šค ๋‚ด์˜ ๊ฐ๊ฐ์˜ resource๋“ค์€ ํ•˜๋‚˜ ์ด์ƒ์˜ URI ์‹๋ณ„์ž๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋ ๊ฒƒ์ž…๋‹ˆ๋‹ค. URI๊ฐ€ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ณ  ์ ์ ˆํžˆ resource๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์Šต๋‹ˆ๋‹ค. URI๋Š” ์˜ˆ์ธก๊ฐ€๋Šฅํ•ด์•ผ ํ•˜๋ฉฐ ์ดํ•ด๋ ฅ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ๊ณ„์ธต๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๊ณ  ์‚ฌ์šฉ์„ฑ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ตฌ์กฐ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋Š” ์ ์—์„œ ์ผ๊ด€๋˜๊ณ  ๊ณ„์ธต์ ์ด๋ผ๋Š” ์ ์—์„œ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

RESTful API๋“ค์€ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด ์ž‘์„ฑ๋˜์–ด์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค. URI์˜ ์ด๋ฆ„๊ณผ ๊ตฌ์กฐ๋Š” ์‚ฌ์šฉ์ž๋“ค์—๊ฒŒ ์˜๋ฏธ๋ฅผ ์ „๋‹ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์œ„์˜ ๊ทœ์น™๋“ค์„ ๋”ฐ๋ฆ„์œผ๋กœ์จ client๋ฅผ ์ข€ ๋” ํ–‰๋ณตํ•˜๊ฒŒ ํ•˜๋Š” ํ›จ์”ฌ ๊น”๋”ํ•œ REST API๋“ค์„ ๋งŒ๋“ค์ˆ˜ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ทœ์น™์ด๋‚˜ ์ œ์•ฝ์กฐ๊ฑด์ด ๋‚˜๋‹ˆ์ง€๋งŒ API๋ฅผ ํ–ฅ์ƒ ์‹œํ‚ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค.




RESTful์˜ ๊ฐœ๋…

RESTful์ด๋ž€

  • RESTful์€ ์ผ๋ฐ˜์ ์œผ๋กœ REST๋ผ๋Š” ์•„ํ‚คํ…์ณ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ์›น ์„œ๋น„์Šค๋ฅผ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ์šฉ์–ด์ด๋‹ค.
    • REST API๋ฅผ ์ œ๊ณตํ•˜๋Š” ์›น ์„œ๋น„์Šค๋ฅผ RESTfulํ•˜๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • RESTful์€ REST๋ฅผ REST ๋‹ต๊ฒŒ ์“ฐ๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ, ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๊ณต์‹์ ์œผ๋กœ ๋ฐœํ‘œํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค.
    • ์ฆ‰, REST ์›๋ฆฌ๋ฅผ ์ž˜ ๋”ฐ๋ฅด๋Š” ์‹œ์Šคํ…œ์€ RESTful ์šฉ์–ด๋กœ ์ง€์นญ๋œ๋‹ค.

RESTful์˜ ๋ชฉ์ 

  • ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฌ์šด REST API๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ
  • RESTfulํ•œ API๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ทผ๋ณธ์ ์ธ ๋ชฉ์ ์ด ์„ฑ๋Šฅ ํ–ฅ์ƒ์— ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ผ๊ด€์ ์ธ ์ปจ๋ฒค์…˜์„ ํ†ตํ•œ API์˜ ์ดํ•ด๋„ ๋ฐ ํ˜ธํ™˜์„ฑ์„ ๋†’์ด๋Š” ๊ฒƒ์ด ์ฃผ ๋™๊ธฐ์ด๋‹ˆ, ์„ฑ๋Šฅ์ด ์ค‘์š”ํ•œ ์ƒํ™ฉ์—์„œ๋Š” ๊ตณ์ด RESTfulํ•œ API๋ฅผ ๊ตฌํ˜„ํ•  ํ•„์š”๋Š” ์—†๋‹ค.

RESTfulํ•˜์ง€ ๋ชปํ•œ ๊ฒฝ์šฐ

  • CRUD ๊ธฐ๋Šฅ์„ ๋ชจ๋‘ POST ๋กœ๋งŒ ์ฒ˜๋ฆฌํ•˜๋Š” API
  • route์— resource, id ์™ธ์˜ ์ •๋ณด๊ฐ€ ๋“ค์–ด๊ฐ€๋Š” ๊ฒฝ์šฐ




references

https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html

https://dkrnfls.tistory.com/218