์ด ๊ธ€์€ YouTube์— ๊ฒŒ์‹œ๋œ ์ด์‘์ค€ ์—ฐ์‚ฌ๋‹˜์˜ โ€œ๊ทธ์ € ๊ทธ๋Ÿฐ REST API๋กœ ๊ดœ์ฐฎ์€๊ฐ€โ€ ์„ธ๋ฏธ๋‚˜๋ฅผ ๋ณด๊ณ  ๊ฐœ์ธ์ ์ธ ์šฉ๋„๋กœ ๊ธฐ๋กํ•˜๊ธฐ ์œ„ํ•ด ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค ใ…Žใ…Ž

3 minute read

์ด ๊ธ€์€ YouTube์— ๊ฒŒ์‹œ๋œ ์ด์‘์ค€ ์—ฐ์‚ฌ๋‹˜์˜ โ€œ๊ทธ์ € ๊ทธ๋Ÿฐ REST API๋กœ ๊ดœ์ฐฎ์€๊ฐ€โ€ ์„ธ๋ฏธ๋‚˜๋ฅผ ๋ณด๊ณ  ๊ฐœ์ธ์ ์ธ ์šฉ๋„๋กœ ๊ธฐ๋กํ•˜๊ธฐ ์œ„ํ•ด ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค ใ…Žใ…Ž




๋ชฐ๋ ค์žˆ๋˜ ์‹œํ—˜๋“ค์ด ๋๋‚˜๊ณ  ์•ฝ๊ฐ„์˜ ์—ฌ์œ ๊ฐ€ ์ƒ๊ฒจ์„œ โ€˜๋‚˜์ค‘์— ๋ณด๊ธฐโ€™ ๋ชฉ๋ก์— ๋ฌตํ˜€ ๋‘” ์˜์ƒ๋“ค์„ ์‚ดํŽด๋ณด๋˜ ์ค‘ ์š”๊ฒƒ์„ ๋ณด๊ฒŒ ๋˜์—ˆ๋‹ค. 47๋ถ„์˜ ์งง์ง€ ์•Š์€ ๋ถ„๋Ÿ‰์ด์ง€๋งŒ, ์—ฐ์‚ฌ๋‹˜๊ป˜์„œ ์ •๋ง ์‰ฝ๊ณ  ์žฌ๋ฏธ์žˆ๊ฒŒ ๊ฐ•์—ฐ์„ ํ•ด์ฃผ์…”์„œ ๋“ฃ๋Š” ๋‚ด๋‚ด ์ง€๋ฃจํ•˜์ง€ ์•Š์•˜๋‹ค!!

์„œ๋ฒ„ ๊ฐœ๋ฐœ์ž๋กœ์„œ โ€œREST๋ฅผ ๋งŒ์กฑํ•˜๋Š” ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค!โ€๋Š” ์†Œ๋ฆฌ๋ฅผ ๋งŽ์ด ๋“ค์—ˆ๊ณ , ๊ฐœ์ธ์ ์œผ๋กœ๋Š” HTTP Method๋ฅผ ์“ฐ๊ณ , HTTP StateCode๋ฅผ ์ž˜ ์“ฐ๋ฉด RESTful ์„œ๋ฒ„๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.


์„ธ๋ฏธ๋‚˜๋Š” REST์˜ ์ฐฝ์‹œ์ž์ธ Roy Fielding ํ˜•๋‹˜์ด ์ถ”๊ตฌํ•˜๋Š” REST๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ง€๊ธˆ์˜ ํ†ต์šฉ๋˜๋Š” REST API๋Š” ์‚ฌ์‹ค ์ •ํ™•ํ•˜๊ฒŒ RESTํ•˜์ง€๋Š” ์•Š๋‹ค๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ง„์ •์œผ๋กœ RESTfulํ•œ API๋ฅผ ๋งŒ๋“œ๋ ค๊ณ  ํ•œ๋‹ค๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์€ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•ด์•ผ ํ•œ๋‹ค๊ณ  R. Fielding ํ˜•๋‹˜์€ ์ฃผ์žฅํ•œ๋‹ค.

  • Uniform Interface
    • Identification of Resources
      • Resource๋ฅผ ๊ตฌ๋ถ„(identify)ํ•˜๋Š” โ€œ์ข‹์€โ€ ์ด๋ฆ„์„ ๋ถ€์—ฌํ•˜๋ผ๋Š” ๋ง.
    • Manipulation of Resources through Representations
      • ์„œ๋ฒ„๊ฐ€ ์ „๋‹ฌํ•˜๋Š” ์ •๋ณด๊ฐ€ ์–ด๋–ป๊ฒŒ ํ‘œํ˜„๋˜๋Š”์ง€ ๋ช…์‹œํ•˜๋ผ.
      • HTTP ํ—ค๋”์— Content-Type: test/html ๋“ฑ์„ ์‚ฌ์šฉํ•˜๋ผ๋Š” ๋ง
    • Self-descriptive message
    • HATEOAS


์œ„์˜ ๋‘ ๊ฐ€์ง€ ์กฐ๊ฑด์€ ํ†ต์šฉ๋˜๋Š” REST API๋“ค๋„ ๋‚˜๋ฆ„ ์ž˜ ์ง€ํ‚ค๊ณ  ์žˆ๋‹ค.
๋ณธ์ธ๋„ Content-Type ์กฐ๊ฑด์€ ์ž˜ ์•ˆ ์ง€์ผฐ๋‹ค. ๋ฐ˜์„ฑํ•œ๋‹ค ใ… ใ… 

Self-descriptive message

์ƒˆ๋กญ๊ฒŒ ์•Œ๊ฒŒ ๋œ ์ด ์กฐ๊ฑด์€ GET body์— ํฌํ•จ๋œ ์ •๋ณด์— ๋Œ€ํ•œ ์ถฉ๋ถ„ํ•œ ์„ค๋ช…(description)์ด HTTP Message์— ๋‹ด๊ฒจ์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ ์„ธ๋ฏธ๋‚˜๋ฅผ ํ†ตํ•ด ์˜ˆ์‹œ๋ฅผ ํ™•์ธํ•ด๋„ ์ด ์กฐ๊ฑด์ด ์™œ ํ•„์š”ํ•œ์ง€ ๊ณต๊ฐํ•˜์ง€๋Š” ๋ชป ํ–ˆ๋‹ค.

์‚ฌ์‹ค Self-descriptive message๋“  HATEOAS๋“  ๋ณธ์ธ์€ ๋‘˜๋‹ค ์ด๊ฒŒ ์ •๋ง ํ•„์š”ํ•œ์ง€ ์™€๋‹ฟ์ง„ ์•Š๋Š”๋‹ค. ์•„์ง ๊ฐœ๋ฐœ ๊ฒฝํ—˜์ด ๋ถ€์กฑํ•œ ๊ฑด์ง€, ์›น ๊ทผ๋ณธ์ฃผ์˜์ž๋“ค์ด ์ค‘์š”์‹œํ•˜๋Š” ์›น-๋ถ•๊ดด ํ˜„์ƒ์— ๋Œ€ํ•ด ๋‘”๊ฐํ•œ ๊ฑด์ง€ ๋ง์ด๋‹ค.


์•„๋งˆ ์ด ์„ธ๋ฏธ๋‚˜์˜ ๊ฐ€์žฅ ํฐ ๊ตํ›ˆ์€ ์›น ํ˜ธํ™˜์„ฑ์— ๋Œ€ํ•œ ๋‚ด์šฉ์ด๋‹ค. ์ œ๋ชฉ์€ ์ •๋ง REST์— ๋Œ€ํ•œ ํŒจ๋Ÿฌ๋‹ค์ž„์„ ๋ถ€์‰ฌ๋Š” ๋ฌธ์žฅ์ด์—ˆ์ง€๋งŒ, ๋ง‰์ƒ ๋‚ด์šฉ์„ ๋“ค์—ฌ๋‹ค๋ณด๋‹ˆ REST๋Š” โ€œ์›น ํ˜ธํ™˜์„ฑโ€์ด๋ผ๋Š” ๊ถ๊ทน์˜ ๊ฐ€์น˜๋ฅผ ์ง€ํ‚ค๊ธฐ ์œ„ํ•œ โ€˜๊ฐ€์ด๋“œ ๋ผ์ธโ€™์˜ ์—ญํ• ์„ ํ•˜๊ธฐ์œ„ํ•ด ๋” ๊ฐ•๋ ฅํ•œ REST๋ฅผ ๊ถŒ์žฅํ•œ๋‹ค๋Š” ๊ฑฐ์˜€๋‹ค.

ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ๊ฐ๊ฐ ๋…๋ฆฝ์ ์œผ๋กœ ์ง„ํ™”ํ•œ๋‹ค.

์™œ W3C์˜ ๋ฉค๋ฒ„๋“ค์ด HTML๋ฅผ ๋‹ค๋“ฌ๋Š”์ง€ 6-7๋…„์ด๋‚˜ ๋˜๋Š” ์‹œ๊ฐ„์ด ๊ฑธ๋ ธ๋Š”์ง€๋Š” ๊ทธ๋งŒํผ ์›น์ด๋ผ๋Š” ์ƒํƒœ๊ณ„๊ฐ€ ๊ฐœ๋ฐœ์ž๋Š” ๋ฌผ๋ก  ํ˜„๋Œ€์ธ์˜ ์ƒํ™œ์—๋„ ๋ฐ€์ ‘ํ•˜๊ฒŒ ๊ด€๋ จ์ด ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•จ๋ถ€๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๋‹ค๋Š” ๊ฑฐ๋‹ค.

์ด๋Ÿฐ ์ ์€ ์ •๋ง Python์ด๋‚˜ TensorFlow์™€ ๊ฐ™์€ ๊ฐœ๋ฐœ์ž๋“ค๋งŒ ์‚ฌ์šฉํ•˜๋Š” ์ƒํƒœ์™€๋Š” ๋Œ€์กฐ์ ์ธ ๊ฒƒ ๊ฐ™๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ TF๋Š” TF2.0์ด ์ถœ์‹œ๋˜๋ฉด์„œ ๊ทนํ˜์ด ๋˜์—ˆ๋‹ค


๋ณ„ ๊ธฐ๋Œ€ ์—†์ด ๋ดค๋˜ ์„ธ๋ฏธ๋‚˜์˜€๋Š”๋ฐ, ์›น๊ฐœ๋ฐœ์— ๋Œ€ํ•œ ์ •๋ง ์ข‹์€ ์ด์•ผ๊ธฐ๋ฅผ ๋“ค์€ ๊ฒƒ ๊ฐ™์•„ ๊ธฐ๋ถ„์ด ์ข‹๋‹ค ใ…Žใ…Ž

Reference

  • What RESTful actually means
    • ์œ„์˜ ํฌ์ŠคํŠธ์—์„œ REST์— ๋Œ€ํ•ด ์ž˜ ๋‹ค๋ฃจ๊ณ  ์žˆ์–ด์„œ ์„ธ๋ฏธ๋‚˜ ๋‚ด์šฉ์„ ๊ธ€๋กœ ๋‹ค์‹œ ์ดํ•ดํ•˜๋Š” ๋ฐ์— ๋„์›€์ด ๋งŽ์ด ๋๋‹ค ใ…Žใ…Ž

Categories:

Updated: