REST API URI ๋””์ž์ธ์— ๋Œ€ํ•œ 7๊ฐ€์ง€ ๊ทœ์น™

2023. 3. 29. 19:39ยทIT/RESTful

thumb

REST API URI ๋””์ž์ธ์— ๋Œ€ํ•œ 7๊ฐ€์ง€ ๊ทœ์น™

REST API URI ๋””์ž์ธ์— ๋Œ€ํ•œ ๊ทœ์น™์„ ์‚ดํŽด๋ณด๊ธฐ ์ „์— ์šฐ๋ฆฌ๊ฐ€ ์ด์•ผ๊ธฐํ•  ๋ช‡ ๊ฐ€์ง€ ์šฉ์–ด์— ๋Œ€ํ•ด ๊ฐ„๋žตํ•˜๊ฒŒ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. URI

REST API๋Š” URI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ์†Œ์Šค์˜ ์ฃผ์†Œ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋Š˜๋‚ ์˜ ์›น์—์„œ URI ๋””์ž์ธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด API์˜ ๋ฆฌ์†Œ์Šค ๋ชจ๋ธ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ์ „๋‹ฌํ•˜๋Š” ๊ฑธ์ž‘ http://api.example.com/louvre/leonardo-da-vinci/mona-lisa ๋ถ€ํ„ฐ ์‚ฌ๋žŒ๋“ค์ด ์ดํ•ดํ•˜๊ธฐ ํ›จ์”ฌ ์–ด๋ ค์šด ๊ฒƒ ๊นŒ์ง€ ๋‹ค์–‘ํ•ฉ๋‹ˆ๋‹ค. http://api.example.com/68dd0-a9d3-11e0-9f1c-0800200c9a66

Tim Berners-Lee๋Š” "์›น ์•„ํ‚คํ…์ฒ˜์˜ ๊ณต๋ฆฌ"๋ชฉ๋ก์— URI์˜ ๋ถˆํˆฌ๋ช…๋„์— ๋Œ€ํ•œ ๋ฉ”๋ชจ๋ฅผ ํฌํ•จ ์‹œ์ผฐ์Šต๋‹ˆ๋‹ค.

์‹๋ณ„์ž๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜์žˆ๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์—ญ์ฐธ์กฐํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ๋‹ค๋ฅธ ์ •๋ณด๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด URI ๋ฌธ์ž์—ด์˜ ๋‚ด์šฉ์„ ํ™•์ธํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.
- Tim Berners-Lee

ํด๋ผ์ด์–ธํŠธ๋Š” ์›น์˜ ์—ฐ๊ฒฐ ํŒจ๋Ÿฌ๋‹ค์ž„์„ ๋”ฐ๋ผ์•ผ ํ•˜๋ฉฐ URI๋ฅผ ๋ถˆํˆฌ๋ช… ์‹๋ณ„์ž๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

REST API ๋””์ž์ด๋„ˆ๋Š” REST API์˜ ๋ฆฌ์†Œ์Šค ๋ชจ๋ธ์„ ์ž ์žฌ์  ํด๋ผ์ด์–ธํŠธ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ „๋‹ฌํ•˜๋Š” URI๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒŒ์‹œ๋ฌผ์—์„œ๋Š” REST API URI์— ๋Œ€ํ•œ ์ผ๋ จ์˜ ๋””์ž์ธ ๊ทœ์น™์„ ์†Œ๊ฐœํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๊ทœ์น™์„ ์‚ดํŽด๋ณด๊ธฐ ์ „์— ์ด ์„น์…˜์— ์ œ๊ณต๋œ ๊ทœ์น™๊ณผ ๊ฐ™์€ URI ํ˜•์‹์— ๋Œ€ํ•œ ๋‹จ์–ด๋Š” URI ํ˜•์‹๊ณผ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
RFC 3986์€ ์•„๋ž˜์™€ ๊ฐ™์ด ์ผ๋ฐ˜ URI ๊ตฌ๋ฌธ์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

URI = scheme "://" authority "/" path [ "?" query ] [ "#" fragment ]

๊ทœ์น™ #1: ํ›„ํ–‰ ์Šฌ๋ž˜์‹œ(/)๋Š” URI์— ํฌํ•จ๋˜์–ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

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

๋งŽ์€ ์›น ๊ตฌ์„ฑ ์š”์†Œ์™€ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๋‹ค์Œ ๋‘ URI๋ฅผ ๋™์ผํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
http://api.canvas.com/shapes/
http://api.canvas.com/shapes

๊ทธ๋Ÿฌ๋‚˜ URI ๋‚ด์˜ ๋ชจ๋“  ๋ฌธ์ž๋Š” ๋ฆฌ์†Œ์Šค์˜ ๊ณ ์œ  ID์— ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

๋‘ ๊ฐœ์˜ ์„œ๋กœ ๋‹ค๋ฅธ URI๊ฐ€ ๋‘ ๊ฐœ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ๋ฆฌ์†Œ์Šค์— ๋งคํ•‘๋ฉ๋‹ˆ๋‹ค. URI๊ฐ€ ๋‹ค๋ฅด๋ฉด ๋ฆฌ์†Œ์Šค๋„ ๋‹ค๋ฅด๊ณ  ๊ทธ ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ REST API๋Š” ๊นจ๋—ํ•œ URI๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ „๋‹ฌํ•ด์•ผ ํ•˜๋ฉฐ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ถ€์ •ํ™•ํ•˜๊ฒŒ ์‹๋ณ„ํ•˜๋ ค๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์‹œ๋„๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋” ๊ด€๋Œ€ํ•œ API๋Š” ํด๋ผ์ด์–ธํŠธ๋ฅผ ํ›„ํ–‰ ์Šฌ๋ž˜์‹œ ์—†์ด URI๋กœ ๋ฆฌ๋””๋ ‰์…˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๋ฆฌ์†Œ์Šค๋ฅผ ์žฌ๋ฐฐ์น˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” 301 – "์˜๊ตฌ์ ์œผ๋กœ ์ด๋™๋จ"์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜๋„ ์žˆ์Œ).

๊ทœ์น™ #2: ์Šฌ๋ž˜์‹œ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ(/)๋Š” ๊ณ„์ธต์  ๊ด€๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ
๊ฐ™์Šต๋‹ˆ๋‹ค http://api.canvas.com/shapes/polygons/quadrilaterals/squares

๊ทœ์น™ #3: URI์˜ ๊ฐ€๋…์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ํ•˜์ดํ”ˆ(-)์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ
๊ฐ™์Šต๋‹ˆ๋‹ค http://api.example.com/blogs/guy-levin/posts/this-is-my-first-post

๊ทœ์น™ #4: URI์— ๋ฐ‘์ค„(_)์„ ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

ํ…์ŠคํŠธ ๋ทฐ์–ด ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ(๋ธŒ๋ผ์šฐ์ €, ํŽธ์ง‘๊ธฐ ๋“ฑ)์€ ํด๋ฆญ ๊ฐ€๋Šฅํ•œ ์‹œ๊ฐ์  ์‹ ํ˜ธ๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด URI์— ๋ฐ‘์ค„์„ ๊ธ‹๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ธ€๊ผด์— ๋”ฐ๋ผ ๋ฐ‘์ค„(_) ๋ฌธ์ž๊ฐ€ ์ด ๋ฐ‘์ค„๋กœ ์ธํ•ด ๋ถ€๋ถ„์ ์œผ๋กœ ๊ฐ€๋ ค์ง€๊ฑฐ๋‚˜ ์™„์ „ํžˆ ์ˆจ๊ฒจ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ํ˜ผ๋™์„ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด ๋ฐ‘์ค„ ๋Œ€์‹  ํ•˜์ดํ”ˆ(-)์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๊ทœ์น™ #5: URI ๊ฒฝ๋กœ์—์„œ๋Š” ์†Œ๋ฌธ์ž๋ฅผ ์„ ํ˜ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํŽธ๋ฆฌํ•œ ๊ฒฝ์šฐ ๋Œ€๋ฌธ์ž๋กœ ์ธํ•ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ URI ๊ฒฝ๋กœ์—์„œ ์†Œ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. RFC 3986์€ ์ฒด๊ณ„ ๋ฐ ํ˜ธ์ŠคํŠธ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ œ์™ธํ•˜๊ณ  URI๋ฅผ ๋Œ€/์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ
๊ฐ™์Šต๋‹ˆ๋‹ค http://api.example.com/my-folder/my-doc

HTTP://API.EXAMPLE.COM/my-folder/my-doc
์ด URI๋Š” ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. URI ํ˜•์‹ ์‚ฌ์–‘(RFC 3986)์€ ์ด URI๋ฅผ URI #1๊ณผ ๋™์ผํ•œ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•ฉ๋‹ˆ๋‹ค.

http://api.example.com/My-Folder/my-doc
์ด URI๋Š” URI 1 ๋ฐ 2์™€ ๋™์ผํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋ถˆํ•„์š”ํ•œ ํ˜ผ๋™์„ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทœ์น™ #6: ํŒŒ์ผ ํ™•์žฅ์ž๋Š” URI์— ํฌํ•จ๋˜์–ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

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


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

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

REST API ํด๋ผ์ด์–ธํŠธ๋Š” HTTP์—์„œ ์ œ๊ณตํ•˜๋Š” ํ˜•์‹ ์„ ํƒ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ธ ์š”์ฒญ ์ˆ˜๋ฝ ํ—ค๋”๋ฅผ ํ™œ์šฉํ•˜๋„๋ก ๊ถŒ์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

๊ทœ์น™ #7: ์—”๋“œํฌ์ธํŠธ ์ด๋ฆ„์€ ๋‹จ์ˆ˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๊นŒ ์•„๋‹ˆ๋ฉด ๋ณต์ˆ˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๊นŒ?

๋‹จ์ˆœํ•˜๊ฒŒ ์œ ์ง€ ๊ทœ์น™์ด ์—ฌ๊ธฐ์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋‚ด๋ถ€ ๋ฌธ๋ฒ•์ž๋Š” ๋ณต์ˆ˜ํ˜•์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ์†Œ์Šค์˜ ๋‹จ์ผ ์ธ์Šคํ„ด์Šค๋ฅผ ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ์ด ์ž˜๋ชป๋˜์—ˆ๋‹ค๊ณ  ๋งํ•˜์ง€๋งŒ ์‹ค์šฉ์ ์ธ ๋Œ€๋‹ต์€ URI ํ˜•์‹์„ ์ผ๊ด€๋˜๊ฒŒ ์œ ์ง€ํ•˜๊ณ  ํ•ญ์ƒ ๋ณต์ˆ˜ํ˜•์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

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

๊ทธ๋Ÿฌ๋‚˜ ๊ด€๊ณ„๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๊นŒ? ๊ด€๊ณ„๊ฐ€ ๋‹ค๋ฅธ ๋ฆฌ์†Œ์Šค ๋‚ด์—์„œ๋งŒ ์กด์žฌํ•  ์ˆ˜์žˆ๋Š” ๊ฒฝ์šฐ RESTful ์›์น™์€ ์œ ์šฉํ•œ ์ง€์นจ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์‚ดํŽด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ•™์ƒ์—๊ฒŒ๋Š” ์—ฌ๋Ÿฌ ์ฝ”์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด /students ์—”๋“œํฌ์ธํŠธ์— ๋…ผ๋ฆฌ์ ์œผ๋กœ ๋งคํ•‘๋ฉ๋‹ˆ๋‹ค.

http://api.college.com/students/3248234/courses - ID๊ฐ€ 3248234์ธ ํ•™์ƒ์ด ํ•™์Šตํ•œ ๋ชจ๋“  ๊ฐ•์˜ ๋ชฉ๋ก์„ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.
http://api.college.com/students/3248234/courses/physics - ID๊ฐ€ 3248234์ธ ํ•™์ƒ์˜ ๋ฌผ๋ฆฌํ•™ ๊ณผ์ •์„ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.

๊ฒฐ๋ก 

REST API ์„œ๋น„์Šค๋ฅผ ์„ค๊ณ„ ํ•  ๋•Œ URI๋กœ ์ •์˜๋˜๋Š” ๋ฆฌ์†Œ์Šค์—์ฃผ์˜๋ฅผ ๊ธฐ์šธ์—ฌ์•ผํ•ฉ๋‹ˆ๋‹ค.

๋นŒ๋“œํ•˜๋Š” ์„œ๋น„์Šค์˜ ๊ฐ ๋ฆฌ์†Œ์Šค์—๋Š” ํ•ด๋‹น ๋ฆฌ์†Œ์Šค๋ฅผ ์‹๋ณ„ํ•˜๋Š” URI๊ฐ€ ํ•˜๋‚˜ ์ด์ƒ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น URI๊ฐ€ ์˜๋ฏธ๊ฐ€ ์žˆ๊ณ  ๋ฆฌ์†Œ์Šค๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์Šต๋‹ˆ๋‹ค. URI๋Š” ์ดํ•ด ๊ฐ€๋Šฅ์„ฑ๊ณผ ์œ ์šฉ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ๊ณ„์ธต์  ๊ตฌ์กฐ๋ฅผ ๋”ฐ๋ผ์•ผ ํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ๊ฐ€ ๊ตฌ์กฐ(๊ด€๊ณ„)๋ฅผ ๊ฐ–๋Š”๋‹ค๋Š” ์˜๋ฏธ์—์„œ ์ผ๊ด€์„ฑ ์žˆ๊ณ  ๊ณ„์ธต์ ์ด๋ผ๋Š” ์˜๋ฏธ์—์„œ ์˜ˆ์ธก ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

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

 

์ถœ์ฒ˜ : 7 Rules for REST API URI Design (restcase.com)

 

7 Rules for REST API URI Design

By following the 7 rules for REST API URI design in the post, you will create a much cleaner REST APIs. Design for your clients, not for your data.

blog.restcase.com

 

 

 

728x90
'IT/RESTful' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • REST API๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ๋ฐฉ๋ฒ•(How to Design a REST API)
  • REST๋ž€?(What is REST)
์ง€๋‹ˆ๐Ÿงž‍โ™‚๏ธ๐Ÿฅญ
์ง€๋‹ˆ๐Ÿงž‍โ™‚๏ธ๐Ÿฅญ
์ผ์ƒ, ๊ฒŒ์ž„, ๋ง›์ง‘, ์—ฌํ–‰, ๊ฐœ๋ฐœ, IT ๋ธ”๋กœ๊ทธ๐Ÿงž
  • ์ง€๋‹ˆ๐Ÿงž‍โ™‚๏ธ๐Ÿฅญ
    ์š”์ˆ  ๋žจํ”„๐Ÿซ–
    ์ง€๋‹ˆ๐Ÿงž‍โ™‚๏ธ๐Ÿฅญ
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • All (549)
      • Languages (57)
        • JAVA (13)
        • JSP (1)
        • C_C++ (4)
        • Html (3)
        • CSS (1)
        • JavaScript (18)
        • Python (3)
        • Kotlin (13)
        • TypeScript (1)
      • Framework (14)
        • spring (11)
        • jstl (1)
        • angular (2)
      • Tool (28)
        • Eclipse (5)
        • vsCode (3)
        • scrcpy (2)
        • Git (1)
        • IntelliJ (6)
        • Visual-studio (1)
        • UML (1)
        • Gradle (8)
      • DB (6)
        • Oracle (1)
        • MySql (3)
        • Mongo (2)
      • OS (14)
        • Linux (2)
        • Windows (12)
      • Server (8)
        • Tomcat (1)
        • Apache (1)
        • Node.js (6)
      • Programmings (25)
        • Design Pattern (2)
        • Funny (20)
        • Algorithms (3)
      • Cloud (8)
        • Docker (1)
        • Kubernetes (4)
        • Istio (1)
        • ArgoCD (2)
      • IT (5)
        • gRPC (3)
        • RESTful (3)
        • Web UI (5)
        • AI (4)
      • Book (6)
      • TIP (187)
      • Life (53)
      • Game (83)
      • Storage (22)
      • ์‹๋‹น (15)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
    • ์‚ฌ์ดํŠธ๋งต
    • RSS
    • ๊ธฐํƒ€ ์†Œ๋“
  • ๋งํฌ

    • ๊ตฌ๊ธ€
    • ๋„ค์ด๋ฒ„
    • ์ •๋ถ€24
    • Spring Framework ๋ฆด๋ฆฌ์ฆˆ ๋…ธํŠธ
    • Kotlin ๋ฆด๋ฆฌ์ฆˆ ๋…ธํŠธ
    • ์นด์นด์˜ค ์• ๋“œํ•
    • ๋ธ”๋กœ๊ทธ ์‚ฌ์ดํŠธ๋งต
    • ๋ธ”๋กœ๊ทธ RSS
  • ๊ณต์ง€์‚ฌํ•ญ

    • ์•ˆ๋…•ํ•˜์„ธ์š”
  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ํ•œ๋ˆˆ์— ๋ณด๋Š” ์˜ค๋Š˜์˜ ๋‰ด์Šค
    ๋‰ด์Šค
    ํ€˜์ŠคํŠธ
    ์˜ค๋Š˜์˜๋‰ด์Šค
    ๋ชฌ์Šคํ„ฐํ—Œํ„ฐ๋‚˜์šฐ
    ํƒœ๊ตญ
    ๋ชฌ์Šคํ„ฐํ—Œํ„ฐ์™€์ผ์ฆˆ
    ๋‰ด์Šค ๋ธŒ๋ฆฌํ•‘
    ๋ธŒ๋ฆฌํ•‘
    ๋ฐ์ผ๋ฆฌ ๋‰ด์Šค
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
์ง€๋‹ˆ๐Ÿงž‍โ™‚๏ธ๐Ÿฅญ
REST API URI ๋””์ž์ธ์— ๋Œ€ํ•œ 7๊ฐ€์ง€ ๊ทœ์น™
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”