JavaRush /Java Blog /Random-KO /REST ๊ฐœ์š”. 2๋ถ€: ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ํ†ต์‹ 

REST ๊ฐœ์š”. 2๋ถ€: ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ํ†ต์‹ 

Random-KO ๊ทธ๋ฃน์— ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค
1๋ถ€: REST๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ด ๋ถ€๋ถ„์—์„œ๋Š” ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์— ํ†ต์‹ ์ด ์–ด๋–ป๊ฒŒ ์ด๋ฃจ์–ด์ง€๋Š”์ง€ ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ ๊ณผ์ •์—์„œ ์šฐ๋ฆฌ๋Š” ์ƒˆ๋กœ์šด ์šฉ์–ด๋ฅผ ๊ณต๊ฐœํ•˜๊ณ  ์ด์— ๋Œ€ํ•œ ์„ค๋ช…์„ ์ œ๊ณตํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. REST ๊ฐœ์š”.  2๋ถ€: ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ํ†ต์‹  - 1๋ชจ๋“  ๊ฒƒ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ์ผ๋ถ€ RESTful ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์˜ˆ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ํ†ต์‹ ์„ ๋ถ„์„ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ณ ๊ฐ๊ณผ ๊ณ ๊ฐ์˜ ์ฃผ๋ฌธ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ €๊ฒƒ๋“ค. ์šฐ๋ฆฌ ์‹œ์Šคํ…œ์€ ์ผ๋ถ€ ์—”ํ„ฐํ‹ฐ๋ฅผ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์ƒ์„ฑ, ํŽธ์ง‘, ์‚ญ์ œ ๋ฐ ์ด์— ๋Œ€ํ•œ ์ •๋ณด ์ œ๊ณต์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์—”ํ„ฐํ‹ฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
  • ํด๋ผ์ด์–ธํŠธ - ํด๋ผ์ด์–ธํŠธ;
  • ์ฃผ๋ฌธ - ๊ณ ๊ฐ ์ฃผ๋ฌธ;
  • ํ’ˆ๋ชฉ-์ƒํ’ˆ.
REST ์•„ํ‚คํ…์ฒ˜์—์„œ ํด๋ผ์ด์–ธํŠธ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์–ป๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•˜๊ธฐ ์œ„ํ•ด ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ , ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

์š”์ฒญ์‚ฌํ•ญ

ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์€ ๊ฑฐ์˜ ํ•ญ์ƒ HTTP๋ฅผ ํ†ตํ•ด ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ HTTP ์š”์ฒญ์€ ์—ฌ๋Ÿฌ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.
  • HTTP ๋ฐฉ์‹;
  • ์ œ๋ชฉ;
  • URI;
  • ์š”์ฒญ ๋ณธ๋ฌธ.
์•„๋ž˜์—์„œ๋Š” ๊ฐ ๊ตฌ์„ฑ์š”์†Œ ๋ถ€๋ถ„์— ๋Œ€ํ•ด ์ข€ ๋” ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

URI ๋ฐ ๋ฆฌ์†Œ์Šค

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญ์„ ํ†ตํ•ด ์–ป๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฆฌ์†Œ์Šค๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ์ƒํ˜ธ ์ž‘์šฉ์˜ ๊ธฐ๋ณธ์€ ๋ฆฌ์†Œ์Šค ์กฐ์ž‘์ž…๋‹ˆ๋‹ค. REST์˜ ๋ฆฌ์†Œ์Šค๋Š” ์ด๋ฆ„์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์–ด๋–ค ์˜๋ฏธ์—์„œ ์ด๋Š” Java์˜ ํด๋ž˜์Šค์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. Java์—์„œ๋Š” ๋ฌด์—‡์ด๋“  ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. REST์—์„œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ๋ฆฌ์†Œ์Šค๋Š” ์‚ฌ์šฉ์ž, ๋ฌธ์„œ, ๋ณด๊ณ ์„œ, ์ฃผ๋ฌธ ๋“ฑ ๋ฌด์—‡์ด๋“  ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ชจ๋“  ๊ฒƒ์€ ์ผ๋ถ€ ์—”ํ„ฐํ‹ฐ์˜ ์ถ”์ƒํ™”์ผ ์ˆ˜๋„ ์žˆ๊ณ  ๊ทธ๋ฆผ, ๋น„๋””์˜ค, ์• ๋‹ˆ๋ฉ”์ด์…˜, PDF ํŒŒ์ผ๊ณผ ๊ฐ™์€ ํŒŒ์ผ๊ณผ ๊ฐ™์€ ๊ตฌ์ฒด์ ์ธ ๊ฒƒ์ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์˜ˆ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ 3๊ฐ€์ง€ ๋ฆฌ์†Œ์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํด๋ผ์ด์–ธํŠธ - ํด๋ผ์ด์–ธํŠธ;
  • ์ฃผ๋ฌธ - ๊ณ ๊ฐ ์ฃผ๋ฌธ;
  • ํ’ˆ๋ชฉ-์ƒํ’ˆ.
ํด๋ผ์ด์–ธํŠธ๋Š” ์†Œ์œ„ ์—”๋“œํฌ์ธํŠธ ๋˜๋Š” ์—”๋“œํฌ์ธํŠธ์— ์š”์ฒญ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ ์—”๋“œํฌ์ธํŠธ ๋Š” ๋„คํŠธ์›Œํฌ์˜ ์ฃผ์†Œ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋” ๊นŠ์ด ๋“ค์–ด๊ฐ€ ๋ณด๋ฉด ์—”๋“œํฌ์ธํŠธ๋Š” ์ถ”์ƒ ๋˜๋Š” ๋ฌผ๋ฆฌ์  ๋ฆฌ์†Œ์Šค๋ฅผ ์‹๋ณ„ํ•˜๋Š” ์ผ๋ จ์˜ ๋ฌธ์ž ์ธ URI ์ž…๋‹ˆ๋‹ค. ํ†ต์ผ ์ž์› ์‹๋ณ„์ž(Uniform Resource Identifier) โ€‹โ€‹- ํ†ตํ•ฉ ์ž์› ์‹๋ณ„์ž. ์—”๋“œํฌ์ธํŠธ ๋˜๋Š” URI๋ฅผ ๊ฒฝ๋กœ(๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ๊ฒฝ๋กœ)๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ์‚ฌ์—์„œ๋Š” URI๋ผ๋Š” ์šฉ์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ํŠน์ • ๋ฆฌ์†Œ์Šค์—๋Š” ๊ณ ์œ ํ•œ URI๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ๋ฆฌ์†Œ์Šค๊ฐ€ ํ•ญ์ƒ ๊ณ ์œ ํ•œ URI๋ฅผ ๊ฐ–๋„๋ก ํ•˜๋Š” ์ฑ…์ž„์€ ์„œ๋ฒ„ ๊ฐœ๋ฐœ์ž์˜ ์–ด๊นจ์— ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์˜ˆ์—์„œ ์šฐ๋ฆฌ๋Š” ๊ฐœ๋ฐœ์ž์ด๋ฏ€๋กœ ์šฐ๋ฆฌ๊ฐ€ ์•Œ๊ณ  ์žˆ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๊ธฐ๋ณธ ํ‚ค๋ฅผ ํŠน์ • ์ˆซ์ž ID๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ๊ด€๋ก€์ธ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์œผ๋ฉฐ, REST์—์„œ๋Š” ๊ฐ ๋ฆฌ์†Œ์Šค์— ๊ณ ์œ ํ•œ ID๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. REST์˜ ๋ฆฌ์†Œ์Šค ID๊ฐ€ ํ•ด๋‹น ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ ˆ์ฝ”๋“œ ID์™€ ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ข…์ข… ์žˆ์Šต๋‹ˆ๋‹ค. REST URI๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ผ๋ถ€ ๋ฆฌ์†Œ์Šค๋ฅผ ์„ค๋ช…ํ•˜๋Š” ๋ณต์ˆ˜ํ˜• ๋ช…์‚ฌ๋กœ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํด๋ผ์ด์–ธํŠธ๋ผ๋Š” ๋‹จ์–ด์—์„œ. ๋‹ค์Œ์œผ๋กœ ํŠน์ • ํด๋ผ์ด์–ธํŠธ์˜ ์‹๋ณ„์ž์ธ ์Šฌ๋ž˜์‹œ๋ฅผ ํ†ตํ•ด ID๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ:
  • /clients - ๋ชจ๋“  ๊ธฐ์กด ํด๋ผ์ด์–ธํŠธ์˜ URI์ž…๋‹ˆ๋‹ค.
  • /clients/23 - ํŠน์ • ํด๋ผ์ด์–ธํŠธ์˜ URI, ์ฆ‰ ID=23์ธ ํด๋ผ์ด์–ธํŠธ์ž…๋‹ˆ๋‹ค.
  • /clients/4 - ํŠน์ • ํด๋ผ์ด์–ธํŠธ์˜ URI, ์ฆ‰ ID=4์ธ ํด๋ผ์ด์–ธํŠธ์ž…๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ ๊ทธ๊ฒŒ ์ „๋ถ€๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ์ฃผ๋ฌธ์„ ์ถ”๊ฐ€ํ•˜์—ฌ URI๋ฅผ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • /clients/4/orders โ€” ํด๋ผ์ด์–ธํŠธ ๋ฒˆํ˜ธ 4์˜ ๋ชจ๋“  ์ฃผ๋ฌธ์— ๋Œ€ํ•œ URI;
  • /clients/1/orders/12 - ํด๋ผ์ด์–ธํŠธ ๋ฒˆํ˜ธ 1์˜ ์ฃผ๋ฌธ ๋ฒˆํ˜ธ 12์˜ URI์ž…๋‹ˆ๋‹ค.
์ด ์ฒด์ธ์„ ๊ณ„์†ํ•ด์„œ ์ƒํ’ˆ์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋‹ค์Œ์„ ์–ป์Šต๋‹ˆ๋‹ค.
  • /clients/1/orders/12/items โ€” ํด๋ผ์ด์–ธํŠธ 1๋ฒˆ์ด ์ฃผ๋ฌธํ•œ 12๋ฒˆ์˜ ๋ชจ๋“  ์ œํ’ˆ ๋ชฉ๋ก์˜ URI์ž…๋‹ˆ๋‹ค.
์ค‘์ฒฉ ์ˆ˜์ค€์—์„œ ํ•ต์‹ฌ์€ URI๋ฅผ ์ง๊ด€์ ์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

HTTP ๋ฐฉ์‹

HTTP ๋ฐฉ๋ฒ•(์˜์–ด HTTP ๋ฐฉ๋ฒ•)์€ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์ฃผ์š” ์ž‘์—…์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ปจํŠธ๋กค ๋ฐ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ๋ฌธ์ž์˜ ์‹œํ€€์Šค์ž…๋‹ˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€ ์ผ๋ฐ˜์ ์ธ HTTP ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. RESTful ์„œ๋น„์Šค์—์„œ ๊ฐ€์žฅ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ํ•ญ๋ชฉ์„ ๋‚˜์—ดํ•ฉ๋‹ˆ๋‹ค.
  • GET - ํŠน์ • ๋ฆฌ์†Œ์Šค(ID๋ฅผ ํ†ตํ•ด) ๋˜๋Š” ๋ฆฌ์†Œ์Šค ๋ชจ์Œ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์–ป๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • POST - ์ƒˆ ๋ฆฌ์†Œ์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • PUT - ๋ฆฌ์†Œ์Šค๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค(ID๋ฅผ ํ†ตํ•ด).
  • DELETE - ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ญ์ œํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค(ID๋ฅผ ํ†ตํ•ด).

์ œ๋ชฉ

์š”์ฒญ๊ณผ ์‘๋‹ต์—๋Š” HTTP ํ—ค๋”๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์š”์ฒญ(๋˜๋Š” ์‘๋‹ต)์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ํ—ค๋”๋Š” ํ‚ค-๊ฐ’ ์Œ์ž…๋‹ˆ๋‹ค. Wikipedia ํŽ˜์ด์ง€ ์—์„œ ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ์ œ๋ชฉ ๋ชฉ๋ก์„ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค . REST๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ๋Œ€ํ•œ ์š”์ฒญ์— Accept ํ—ค๋”๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์–ด๋–ค ํ˜•์‹์œผ๋กœ ์‘๋‹ต์„ ๋ฐ›์„ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•˜๋Š”์ง€ ์„œ๋ฒ„์— ์•Œ๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค. MIME ์œ ํ˜• ๋ชฉ๋ก์—๋Š” ๋‹ค์–‘ํ•œ ํ˜•์‹ ์˜ต์…˜์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. MIME (๋‹ค๋ชฉ์  ์ธํ„ฐ๋„ท ๋ฉ”์ผ ํ™•์žฅ)์€ ์ธํ„ฐ๋„ท์„ ํ†ตํ•ด ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋„๋ก ์ •๋ณด๋ฅผ ์ธ์ฝ”๋”ฉํ•˜๊ณ  ๋ฉ”์‹œ์ง€ ํ˜•์‹์„ ์ง€์ •ํ•˜๊ธฐ ์œ„ํ•œ ์‚ฌ์–‘์ž…๋‹ˆ๋‹ค. ๊ฐ MIME ์œ ํ˜•์€ ์Šฌ๋ž˜์‹œ๋กœ ๊ตฌ๋ถ„๋œ ์œ ํ˜•๊ณผ ํ•˜์œ„ ์œ ํ˜•์˜ ๋‘ ๋ถ€๋ถ„์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ํŒŒ์ผ ์œ ํ˜•์— ๋Œ€ํ•œ MIME ์œ ํ˜•์˜ ์˜ˆ:
  • ํ…์ŠคํŠธ - ํ…์ŠคํŠธ/์ผ๋ฐ˜, ํ…์ŠคํŠธ/CSS, ํ…์ŠคํŠธ/html;
  • ์ด๋ฏธ์ง€ - ์ด๋ฏธ์ง€/png, ์ด๋ฏธ์ง€/jpeg, ์ด๋ฏธ์ง€/gif;
  • ์˜ค๋””์˜ค - ์˜ค๋””์˜ค/wav, ์˜ค๋””์˜ค/mpeg;
  • ๋น„๋””์˜ค - ๋น„๋””์˜ค/mp4, ๋น„๋””์˜ค/ogg;
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ - ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜/json, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜/pdf, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜/xml, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜/์˜ฅํ…Ÿ-์ŠคํŠธ๋ฆผ.
์ „์ฒด์ ์œผ๋กœ ์š”์ฒญ์—๋Š” ๋‹ค์Œ ํ—ค๋”๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
Accept:application/json
์ด ํ—ค๋”๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ JSON ํ˜•์‹์˜ ์‘๋‹ต์„ ๋ฐ›์„ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์„œ๋ฒ„์— ์•Œ๋ ค์ค๋‹ˆ๋‹ค.

์š”์ฒญ ๋ณธ๋ฌธ

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„๋กœ ๋ณด๋‚ธ ๋ฉ”์‹œ์ง€์ž…๋‹ˆ๋‹ค. ์š”์ฒญ์— ๋ณธ๋ฌธ์ด ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋Š” HTTP ์š”์ฒญ ์œ ํ˜•์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด GET ๋ฐ DELETE ์š”์ฒญ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์š”์ฒญ ๋ณธ๋ฌธ์„ ํฌํ•จํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ PUT ๋ฐ POST์—๋Š” ๋‹ค์Œ์ด ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ชจ๋‘ ์š”์ฒญ ์œ ํ˜•์˜ ๊ธฐ๋Šฅ์  ๋ชฉ์ ์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ, id(URL๋กœ ์ „์†ก๋˜๋Š”)๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๊ณ  ์‚ญ์ œํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์„œ๋ฒ„์— ์ถ”๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ƒˆ ๋ฆฌ์†Œ์Šค(POST ์š”์ฒญ)๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋ฉด ์ด ๋ฆฌ์†Œ์Šค๋ฅผ ์ „์†กํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด ๋ฆฌ์†Œ์Šค๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๊ฒฝ์šฐ์—๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. REST์—์„œ๋Š” ์š”์ฒญ ๋ณธ๋ฌธ์„ ์ „์†กํ•˜๋Š” ๋ฐ XML ๋˜๋Š” JSON ํ˜•์‹์ด ๊ฐ€์žฅ ์ž์ฃผ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ํ˜•์‹์€ JSON์ž…๋‹ˆ๋‹ค. ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ๊ทธ ์•ˆ์—์„œ ์ƒˆ ๋ฆฌ์†Œ์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ธฐ์–ตํ•˜์‹ ๋‹ค๋ฉด, ์šฐ๋ฆฌ๋Š” ๊ณ ๊ฐ ์ฃผ๋ฌธ์„ ๊ด€๋ฆฌํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์˜ˆ๋กœ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ƒˆ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ ํด๋ผ์ด์–ธํŠธ์— ๋Œ€ํ•ด ๋‹ค์Œ ์ •๋ณด๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฆ„ ์ด๋ฉ”์ผ ์ „ํ™”๋ฒˆํ˜ธ ๊ทธ๋Ÿฌํ•œ ์š”์ฒญ์˜ ๋ณธ๋ฌธ์€ ๋‹ค์Œ JSON์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
{
  "name" : "Amigo",
  "email" : "amigo@jr.com",
  "phone" : "+7 (191) 746-43-23"
}

์š”์ฒญ ์ข…ํ•ฉ

๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๋Š” ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์ด ๋ฌด์—‡์œผ๋กœ ๊ตฌ์„ฑ๋  ์ˆ˜ ์žˆ๋Š”์ง€ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด์ œ ์„ค๋ช…์ด ํฌํ•จ๋œ ์ฟผ๋ฆฌ์˜ ๋ช‡ ๊ฐ€์ง€ ์˜ˆ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
์š”๊ตฌ ์„ค๋ช…

GET /clients/23
Accept : application/json, application/xml
23๋ฒˆ ํด๋ผ์ด์–ธํŠธ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ json ๋˜๋Š” xml ํ˜•์‹์œผ๋กœ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

POST /clients
{
  "name" : "Amigo",
  "email" : "amigo@jr.com",
  "phone" : "+7 (191) 746-43-23"
}
๋‹ค์Œ ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ ํด๋ผ์ด์–ธํŠธ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
์ด๋ฆ„ - Amigo
์ด๋ฉ”์ผ - amigo@jr.com
Tel. โ€” +7 (191) 746-43-23

PUT /clients/1
{
  "name" : "Ben",
  "email" : "bigben@jr.com",
  "phone" : "+380 (190) 346-42-13"
}
ํด๋ผ์ด์–ธํŠธ #1์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํŽธ์ง‘ํ•˜์‹ญ์‹œ์˜ค.
์ด๋ฆ„ - Ben
์ด๋ฉ”์ผ - bigben@jr.com
Tel. โ€” +380 (190) 346-42-13

DELETE /clients/12/orders/6
์‹œ์Šคํ…œ์—์„œ ๊ณ ๊ฐ ๋ฒˆํ˜ธ 12์˜ ์ฃผ๋ฌธ ๋ฒˆํ˜ธ 6์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

๋‹ต๋ณ€

์„œ๋ฒ„์˜ ์‘๋‹ต์— ๋Œ€ํ•ด ๋ช‡ ๋งˆ๋”” ๋งํ•ด๋ณด์ž. ๋Œ€๋‹ต์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์Œ ๋ถ€๋ถ„์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.
  • ์‘๋‹ต ์ฝ”๋“œ;
  • ํ—ค๋”;
  • ์‘๋‹ต ๋ณธ๋ฌธ.
์ผ๋ฐ˜์ ์œผ๋กœ ์‘๋‹ต ํ—ค๋”๋Š” ์š”์ฒญ ํ—ค๋”์™€ ํฌ๊ฒŒ ๋‹ค๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ผ๋ถ€ ํ—ค๋”๋Š” ์‘๋‹ต๊ณผ ์š”์ฒญ ๋ชจ๋‘์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์‘๋‹ต ๋ณธ๋ฌธ์—์„œ๋„ ๋ชจ๋“  ๊ฒƒ์ด ๋ช…ํ™•ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ณธ๋ฌธ์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญํ•œ ์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. GET ์š”์ฒญ์— ๋Œ€ํ•ด ๋™์ผํ•œ JSON ํ˜•์‹์œผ๋กœ ์ •๋ณด๊ฐ€ ๋ฐ˜ํ™˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋งˆ์ง€๋ง‰ ๋ถ€๋ถ„์€ ์ข€ ๋” ํฅ๋ฏธ๋กญ์Šต๋‹ˆ๋‹ค.

HTTP ์‘๋‹ต ์ฝ”๋“œ

HTTP ์‘๋‹ต ์ฝ”๋“œ๋ฅผ ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ Wikipedia์˜ ์ธ์šฉ๋ฌธ์ž…๋‹ˆ๋‹ค. HTTP ์ƒํƒœ ์ฝ”๋“œ๋Š” HTTP ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•œ ์š”์ฒญ์— ๋Œ€ํ•œ ์„œ๋ฒ„ ์‘๋‹ต์˜ ์ฒซ ๋ฒˆ์งธ ์ค„์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค. 10์ง„์ˆ˜ ์„ธ ์ž๋ฆฌ์˜ ์ •์ˆ˜์ž…๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์ˆซ์ž๋Š” ์ƒํƒœ์˜ ํด๋ž˜์Šค๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์‘๋‹ต ์ฝ”๋“œ ๋’ค์—๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋œ ์˜์–ด ์„ค๋ช… ๋ฌธ๊ตฌ๊ฐ€ ์˜ต๋‹ˆ๋‹ค. ์ด๋Š” ํ•ด๋‹น ์‘๋‹ต์ž์—๊ฒŒ ์ด ํŠน์ • ์‘๋‹ต์˜ ์ด์œ ๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ:
  • 201 ์ƒ์„ฑ๋จ;
  • 401 ์Šน์ธ๋˜์ง€ ์•Š์Œ;
  • 507 ์ €์žฅ ๊ณต๊ฐ„์ด ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค.
ํด๋ผ์ด์–ธํŠธ๋Š” ์š”์ฒญ ๊ฒฐ๊ณผ์— ๋Œ€ํ•ด ์‘๋‹ต ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ํ•™์Šตํ•˜๊ณ  ๋‹ค์Œ์— ์ˆ˜ํ–‰ํ•  ์ž‘์—…์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ์‘๋‹ต ์ฝ”๋“œ๋Š” ์—ฌ๋Ÿฌ ๊ทธ๋ฃน์œผ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค.
  • 1ะฅะฅ - ์ •๋ณด ์ œ๊ณต์šฉ;
  • 2ะฅะฅ - ๊ณ ๊ฐ ์š”์ฒญ์˜ ์„ฑ๊ณต์ ์ธ ์ˆ˜๋ฝ ๋ฐ ์ฒ˜๋ฆฌ ์‚ฌ๋ก€์— ๋Œ€ํ•ด ์•Œ๋ฆฝ๋‹ˆ๋‹ค.
  • 3XX - ์ž‘์—…์„ ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒํ•˜๋ ค๋ฉด ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค๋ฅธ URI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค๋ฅธ ์š”์ฒญ์„ ํ•ด์•ผ ํ•จ์„ ํด๋ผ์ด์–ธํŠธ์— ์•Œ๋ฆฝ๋‹ˆ๋‹ค.
  • 4ะฅะฅ - ํด๋ผ์ด์–ธํŠธ ์˜ค๋ฅ˜. ์˜ˆ๋ฅผ ๋“ค์–ด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ์š”์ฒญํ•  ๋•Œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์ž˜๋ชป ๊ตฌ์„ฑ๋œ ์š”์ฒญ์ด๋‚˜ ์ž˜ ์•Œ๋ ค์ง„ 404 ์ฐพ์„ ์ˆ˜ ์—†์Œ ์ฝ”๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
  • 5ะฅะฅ - ์„œ๋ฒ„ ์˜ค๋ฅ˜. ์„œ๋ฒ„ ์˜ค๋ฅ˜๋กœ ์ธํ•ด ์ž‘์—…์ด ์‹คํŒจํ•œ ๊ฒฝ์šฐ ํด๋ผ์ด์–ธํŠธ์— ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.
์—ฌ๊ธฐ์—์„œ ๋ชจ๋“  ์ฝ”๋“œ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์„ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค . 1๋ถ€: REST๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ 3๋ถ€: Spring Boot์—์„œ RESTful ์„œ๋น„์Šค ๋งŒ๋“ค๊ธฐ
์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION