๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Front-End

RESTful API ๋ž€?

by ์ฝ”๋”ฉํ•˜๋Š” ๋ถ•์–ด 2021. 11. 15.
๋ฐ˜์‘ํ˜•

๐ŸŒฐ RESTful API๋ž€?

HTTP ํ†ต์‹ ์—์„œ ์–ด๋–ค ์ž์›์— ๋Œ€ํ•œ CRUD ์š”์ฒญ์„ Resource์™€ Method๋กœ ํ‘œํ˜„ํ•˜์—ฌ ํŠน์ •ํ•œ ํ˜•ํƒœ๋กœ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ์‹

 

API ์‹œ์Šคํ…œ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ์•„ํ‚คํ…์ฒ˜ ์ค‘์— ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ํ˜•์‹.
HTTP method, URI, Resource๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

  • URL(Uniform Resource Identifier)
    ํ•ด๋‹น ์‚ฌ์ดํŠธ์˜ ํŠน์ • ์ž์›์˜ ์œ„์น˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์œ ์ผํ•œ ์ฃผ์†Œ
  • HTTP Method
    HTTP request๊ฐ€ ์˜๋„ํ•˜๋Š” action์„ ์ •์˜ํ•œ ๊ฒƒ
  • Payload
    HTTP request์—์„œ server๋กœ ๋ณด๋‚ด๋Š” ๋ฐ์ดํ„ฐ (body)

(์œ„์— 3๊ฐ€์ง€๋Š” ์ดํ•ด ์•ˆ๊ฐ€๋ฉด ๋”ฐ๋กœ ํ•™์Šตํ•ด๋ณผ๊ฒƒ!)



 

๐Ÿฅœ REpresentational State Transfer

์›น์ƒ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์—ฌ๋Ÿฌ ๋ฆฌ์†Œ์Šค๋ฅผ HTTP URI๋กœ ํ‘œํ˜„ํ•˜๊ณ  ๊ทธ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ํ–‰์œ„๋ฅผ HTTP Method๋กœ ์ •์˜ํ•˜๋Š” ๋ฐฉ์‹. ์ฆ‰, ๋ฆฌ์†Œ์Šค(HTTP URI๋กœ ์ •์˜๋œ)๋ฅผ ์–ด๋–ป๊ฒŒ ํ•œ๋‹ค(HTTP Method)๋ฅผ ๊ตฌ์กฐ์ ์œผ๋กœ ๊น”๋”ํ•˜๊ฒŒ ํ‘œํ˜„



 

๐ŸŒฐ RESTful API์˜ ์žฅ์ 

๐Ÿฅœ Self-descriptiveness

RESTful API๋Š” ๊ทธ ์ž์ฒด๋งŒ์œผ๋กœ๋„ API์˜ ๋ชฉ์ ์ด ์‰ฝ๊ฒŒ ์ดํ•ด๊ฐ€ ๋œ๋‹ค.



 

๐ŸŒฐ RESTful API ์„ค๊ณ„ ๊ทœ์น™

๐Ÿฅœ URI ์ •๋ณด๋Š” ๋ช…ํ™•ํ•˜๊ฒŒ ํ‘œํ˜„ํ•ด์•ผ ํ•œ๋‹ค.

  • resource๋Š” ๋ช…์‚ฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

๐Ÿฅœ resource์— ๋Œ€ํ•œ ํ–‰์œ„๋ฅผ HTTP Method(GET, POST, PUT, DELETE)๋กœ ํ‘œํ˜„ํ•œ๋‹ค.

  • URI์— HTTP Method๊ฐ€ ํฌํ•จ๋˜์–ด์„œ๋Š” ์•ˆ๋œ๋‹ค.
  • URI์— ๋™์‚ฌ๊ฐ€ ํฌํ•จ๋˜์„œ๋Š” ์•ˆ๋œ๋‹ค.

๐Ÿฅœ resource ์‚ฌ์ด์— ์—ฐ๊ด€ ๊ด€๊ณ„๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ

  • /๋ฆฌ์†Œ์Šค/๊ณ ์œ ID/๊ด€๊ณ„ ์žˆ๋Š” ๋ฆฌ์†Œ์Šค

๐Ÿฅœ URI๋Š” / ๊ตฌ๋ถ„์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž์›์˜ ๊ณ„์ธต ๊ด€๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š”๋ฐ ์‚ฌ์šฉํ•œ๋‹ค.

๐Ÿฅœ URI ๋งˆ์ง€๋ง‰ ๋ฌธ์ž๋กœ /๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค.

๐Ÿฅœ ๋ถˆ๊ฐ€ํ”ผํ•˜๊ฒŒ URI๊ฐ€ ๊ธธ์–ด์ง€๋Š” ๊ฒฝ์šฐ -์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€๋…์„ฑ์„ ๋†’์ธ๋‹ค.

๐Ÿฅœ _ ๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

๐Ÿฅœ URI ๊ฒฝ๋กœ์—๋Š” ๋Œ€๋ฌธ์ž ์‚ฌ์šฉ์„ ํ”ผํ•˜๋„๋ก ๊ทœ์ •ํ•˜๊ณ  ์žˆ๋‹ค.

๐Ÿฅœ ํŒŒ์ผ์˜ ๊ฒฝ์šฐ payload์˜ ํฌ๋งท์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•œ ํŒŒ์ผ ํ™•์žฅ์ž๋ฅผ URI์— ํฌํ•จ์‹œํ‚ค์ง€ ์•Š๋Š”๋‹ค.



 

๐ŸŒฐ Path parameters

ํ•„์š”ํ•œ ์ƒํ™ฉ์— ๋”ฐ๋ผ, ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ์ •๋ณด์— ๋”ฐ๋ผ URI๋ฅผ ๋‹ค๋ฅด๊ฒŒ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋‹ค.
์›ํ•˜๋Š” ์กฐ๊ฑด์˜ ๋ฐ์ดํ„ฐ ๋˜๋Š” ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋ฐ›์•„์˜ฌ ๋–„ ์‚ฌ์šฉํ•œ๋‹ค.
Not Found์‹œ, 404 ERROR์„ ๋ณด๋‚ธ๋‹ค.

 

 

 

๐ŸŒฐ Query parameters

Path parameters๋ณด๋‹ค ์ข€ ๋” ์ƒ์„ธ์กฐ๊ฑด์œผ๋กœ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.
์ •๋ ฌ์ด๋‚˜ ํ•„ํ„ฐ๋ง์„ ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
Not Found์‹œ, ํŠน์ •ํ•œ ๊ฐ’์„ ๋ณด๋‚ธ๋‹ค.

๋ฐ˜์‘ํ˜•

'Front-End' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

์ธ๊ฐ€(Authorization)  (0) 2021.11.18
Self Refactoring Tip  (0) 2021.11.17
gitignore  (0) 2021.11.10
await, async, promise  (0) 2021.11.10
Axios ๋ž€?  (0) 2021.11.10

๋Œ“๊ธ€