#REST copy-pastas

#Ackshuallyโ€ฆ

์ž ์‹œ ๋ผ์–ด๋“ค๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์ด REST๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๊ฒƒ์€ ์‚ฌ์‹ค JSON/RPC, ๋˜๋Š” ์ตœ๊ทผ์— ์ €๋Š” REST-less๋ผ๊ณ  ๋ถ€๋ฅด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. JSON์€ ๊ทธ ์ž์ฒด๋กœ ํ•˜์ดํผ๋ฏธ๋””์–ด๋ผ๊ธฐ๋ณด๋‹ค๋Š” swagger ๋ฌธ์„œ ๋“ฑ์— ์ •์˜๋œ ๋Œ€๋กœ out of band ์ •๋ณด์— ์˜ํ•ด ์œ ์šฉํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์ง„ ์ผ๋ฐ˜ ๋ฐ์ดํ„ฐ ํ˜•์‹์ž…๋‹ˆ๋‹ค.

๋งŽ์€ ์ปดํ“จํ„ฐ ์‚ฌ์šฉ์ž๋“ค์€ ์ž์‹ ๋„ ๋ชจ๋ฅด๊ฒŒ ๋งค์ผ ํ‘œ์ค€ ๋ฒ„์ „์˜ REST๋กœ ์ž‘์—…ํ•ฉ๋‹ˆ๋‹ค.
ํŠน์ดํ•œ ์‚ฌ๊ฑด์˜ ์ „ํ™˜์œผ๋กœ ์˜ค๋Š˜๋‚  ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” REST ๋ฒ„์ „์€ ์ข…์ข… โ€œ์›นโ€์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ๋ฉฐ, ๋งŽ์€ ์‚ฌ์šฉ์ž๋“ค์€ ์ด๊ฒƒ์ด ๊ธฐ๋ณธ์ ์œผ๋กœ Roy Fielding์ด ์ •์˜ํ•œ REST-ful ์•„ํ‚คํ…์ฒ˜๋ผ๋Š” ์‚ฌ์‹ค์„ ์•Œ์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ REST๊ฐ€ ์กด์žฌํ•˜๊ณ  ์‚ฌ๋žŒ๋“ค์ด ์ด๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€๋งŒ ์ด๋Š” ๊ทธ๋“ค์ด ์‚ฌ์šฉํ•˜๋Š” The Web์˜ ์ผ๋ถ€์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.
REST๋Š” ๋„คํŠธ์›Œํฌ ์•„ํ‚คํ…์ฒ˜์ž…๋‹ˆ๋‹ค. ํ•˜์ดํผ๋ฏธ๋””์–ด๋Š” ํ•˜์ดํผ๋ฏธ๋””์–ด ํด๋ผ์ด์–ธํŠธ๋ฅผ ์œ„ํ•ด ๋ฆฌ์†Œ์Šค ์ƒํƒœ๋ฅผ ์ธ์ฝ”๋”ฉํ•ฉ๋‹ˆ๋‹ค. JSON์€ ๋‹จ์ผ ํŽ˜์ด์ง€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ•„์ˆ˜์ ์ธ ๋ถ€๋ถ„์ด์ง€๋งŒ ๊ทธ ์ž์ฒด๋กœ๋Š” ์“ธ๋ชจ๊ฐ€ ์—†์œผ๋ฉฐ, ์™„์ „ํ•œ API ์‚ฌ์–‘์˜ ๋งฅ๋ฝ์—์„œ๋งŒ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. JSON์€ ์ผ๋ฐ˜์ ์œผ๋กœ SPA ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜๋ฉฐ, ์ „์ฒด ์‹œ์Šคํ…œ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ JSON์ด ์ถ”๊ฐ€๋œ RPC ๋˜๋Š” JSON/RPC์ž…๋‹ˆ๋‹ค. ์†Œ์œ„ โ€œREST-fulโ€ API๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ๋ชจ๋“  API๋Š” ์‹ค์ œ๋กœ๋Š” JSON/RPC์ž…๋‹ˆ๋‹ค.


#lเป, tเป thฤ“ ยขเปเบ–trเธ„rเธฏ

๋””์ง€ํ„ธ ๊ฒฝ์ด๋กœ์›€์˜ ์„ธ๊ณ„์—์„œ ์ž ์‹œ ์‹œ๊ฐ„์„ ๋‚ด์–ด ๋ช…ํ™•ํžˆ ์„ค๋ช…ํ•ด๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด REST๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๊ฒƒ์€ ์‚ฌ์‹ค JSON/RPC, ๋˜๋Š” ์ตœ๊ทผ์— ์‚ฌ์šฉํ•˜๊ธฐ ์‹œ์ž‘ํ•œ REST-less์ž…๋‹ˆ๋‹ค. JSON์€ ๊ทธ ์ž์ฒด๋กœ ๋งˆ๋ฒ•์˜ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์•„๋‹ˆ๋ผ, Swagger ์ฑ…๊ณผ ๊ทธ ๋™๋ฅ˜์— ์˜ํ•ด ํ˜•์„ฑ๋œ ๋ณด์ด์ง€ ์•Š๋Š” ์ถœ์ฒ˜์˜ ์ง€ํ˜œ๋กœ ์˜๋ฏธ ์žˆ๊ฒŒ ๋งŒ๋“ค์–ด์ง„ ๋‹จ์ˆœํ•œ ๋ฐ์ดํ„ฐ ์–‘ํ”ผ์ง€์— ๋ถˆ๊ณผํ•ฉ๋‹ˆ๋‹ค.

์ˆ˜๋งŽ์€ ์ฝ”๋“œ์˜ ์ˆ˜ํ˜ธ์ž๋“ค์€ ๋งค์ผ ๊ทธ ์กด์žฌ๋ฅผ ์˜์‹ํ•˜์ง€ ๋ชปํ•œ ์ฑ„ ์กด๊ฒฝ๋ฐ›๋Š” ํ˜•ํƒœ์˜ REST์™€ ์ƒํ˜ธ์ž‘์šฉํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์šด๋ช…์˜ ์žฅ๋‚œ์œผ๋กœ ์˜ค๋Š˜๋‚  ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” REST์˜ ํ•ด์„์€ ์ข…์ข… โ€œ์›นโ€์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ๋ฉฐ, ๋งŽ์€ ์ฃผ๋ฏผ๋“ค์€ ํ˜„์ž Roy Fielding์ด ์ œ์‹œํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณธ์งˆ์ ์œผ๋กœ REST์˜ ์•„ํ‚คํ…์ฒ˜ ์˜์—ญ์— ์‚ด๊ณ  ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์ธ์‹ํ•˜์ง€ ๋ชปํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ์ง„์ •ํ•œ REST๊ฐ€ ์กด์žฌํ•˜๋ฉฐ, ์ด ์‚ฌ๋žŒ๋“ค์€ ์ด๋ฅผ ํ™œ์šฉํ•˜๊ณ  ์žˆ์ง€๋งŒ, ์ด๋Š” ๊ทธ๋“ค์ด ๊ด€์—ฌํ•˜๋Š” ์›น์˜ ํ•œ ์ธก๋ฉด์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. REST๋Š” ์œ„๋Œ€ํ•œ ๋„คํŠธ์›Œํฌ ์•„ํ‚คํ…์ฒ˜์ž…๋‹ˆ๋‹ค. ํ•˜์ดํผ๋ฏธ๋””์–ด๋Š” ํ•˜์ดํผ๋ฏธ๋””์–ด ํ•ญํ•ด์ž๋“ค์„ ์œ„ํ•ด ๋ฆฌ์†Œ์Šค ์ƒํƒœ๋ฅผ ์ƒˆ๊ฒจ ๋„ฃ์Šต๋‹ˆ๋‹ค. JSON์€ ๋‹จ์ผ ํŽ˜์ด์ง€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ•ต์‹ฌ ์š”์†Œ์ด์ง€๋งŒ ๋‹จ๋…์œผ๋กœ๋Š” ๊ฐ€์น˜๊ฐ€ ์—†์œผ๋ฉฐ, ํฌ๊ด„์ ์ธ API ์‚ฌ์–‘์˜ ์˜์—ญ ๋‚ด์—์„œ๋งŒ ๊ทธ ํž˜์„ ๋ฐœํœ˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. JSON์€ ์ผ๋ฐ˜์ ์œผ๋กœ SPA ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํ•จ๊ป˜ ๋ฐฐํฌ๋˜๋ฉฐ, ์ „์ฒด ์˜์—ญ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ JSON์œผ๋กœ ์žฅ์‹๋œ RPC, ์ฆ‰ JSON/RPC์ž…๋‹ˆ๋‹ค. โ€œREST-fulโ€ API๋กœ ํ™˜์˜๋ฐ›๋Š” ์ด๋Ÿฌํ•œ ๋ชจ๋“  ์—”ํ‹ฐํ‹ฐ๋Š” ์‹ค์ œ๋กœ๋Š” JSON/RPC์˜ ๊ตฌ์ฒดํ™”์ž…๋‹ˆ๋‹ค.

Translated with DeepL.com (free version)

</>