week9_incheol_5 - GANGNAM-JAVA/JAVA-STUDY GitHub Wiki

rest, restful api์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด๋ณด์‹œ์˜ค.

REST API

์ •์˜

HTTP URI๋ฅผ ํ†ตํ•ด Resource๋ฅผ ๋ช…์‹œํ•˜๊ณ  HTTP Method(POST, GET, PUT, DELETE)๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ์ž์›์— ๋Œ€ํ•œ CRUD Operation์„ ์ ์šฉํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

์žฅ์ 

  • REST API ๋ฉ”์‹œ์ง€๊ฐ€ ์˜๋„ํ•˜๋Š” ๋ฐ”๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ๋‚˜ํƒ€๋‚ด๋ฏ€๋กœ ๋ถ€๊ฐ€์ ์ธ ์„ค๋ช…์— ๋”ฐ๋ฅธ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ๋น„์šฉ์ด ๋“ค์ง€ ์•Š๋Š”๋‹ค.
  • ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์„œ๋น„์Šค ๋””์ž์ธ์—์„œ ํ†ต์šฉ๋˜์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ฒ”์šฉ์ ์ด๋‹ค.

๋‹จ์ 

  • ํ‘œ์ค€์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ๊ตฌํ˜• ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์•„์ง ์ œ๋Œ€๋กœ ์ง€์›ํ•ด์ฃผ์ง€ ๋ชปํ•˜๋Š” ๋ถ€๋ถ„์ด ์กด์žฌํ•œ๋‹ค. (PUT, DELETE)
  • PUT, DELETE๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค.
    • GET์€ Form์— ์žˆ๋Š” ์ •๋ณด๋ฅผ ์ค„ํ…Œ๋‹ˆ ๋‚˜์—๊ฒŒ ๋ฆฌ์†Œ์Šค(representation)๋ฅผ ์š”์ฒญํ•˜๋Š” ๋œป.
    • POST๋Š” Form์— ์žˆ๋Š” ์ •๋ณด๋ฅผ ์ค„ํ…Œ๋‹ˆ ์ด๊ฑธ๋กœ ์ฒ˜๋ฆฌ๋ฅผ ์š”์ฒญํ•˜๋Š” ๋œป.
    • DELETE์—์„œ URI๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ์‹๋ณ„ํ•˜๊ณ  ์š”์ฒญ์„ ๋ณด๋‚ด๊ธฐ ๋•Œ๋ฌธ์— Form์„ ํ†ตํ•ด ๊ฐ’์„ ์ „๋‹ฌํ•  ๊ฒŒ ์—†์œผ๋ฉฐ, ๊ถŒํ•œ์„ ํš๋“ํ•˜๊ธฐ ์œ„ํ•ด์„  header๋ฅผ ์ด์šฉํ•ด์•ผ ํ•œ๋‹ค.
    • PUT๋„ ์ „์†กํ•ด์•ผํ•  ๊ฒƒ์€ ๋Œ€์ƒ ๋ฆฌ์†Œ์Šค๋ฅผ ๋Œ€์ฒดํ•  Representation ๊ทธ ์ž์ฒด์ธ๋ฐ, ์กฐ๊ฐ๋‚œ Form ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋ผ๊ณ  ๋ณด๋‚ผ ์ˆ˜๋Š” ์—†๋‹ค.

RestFul API

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