Springboot/Project

[Youtube project] REST API ์„ค๊ณ„ํ•ด๋ณด๊ธฐ

Alchemists 2022. 8. 12. 11:55
728x90

์ด์ „๊นŒ์ง€ ๋งŒ๋“  ERD์™€ ํ•œ๋ฐฉ์ฟผ๋ฆฌ๋“ค์„ ๋ฐ”ํƒ•์œผ๋กœ ์•„์ฃผ ๊ฐ„๋‹จํ•œ ์œ ํŠœ๋ธŒ RestAPI๋ฅผ ์„ค๊ณ„ํ•ด๋ณด์•˜๋‹ค.

 

๐Ÿ‹ RestAPI๊ฐ€ ๋ญ”๊ฐ€์š”?

 

REST๋ž€ Representational State Transfer์˜ ์•ฝ์ž๋กœ ์ž์›์„ ์ด๋ฆ„์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ํ•ด๋‹น ์ž์›์˜ ์ƒํƒœ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ๋ชจ๋“  ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. 

REST๋Š”

  • ์ž์›(RESOURCE) - URI
  • ํ–‰์œ„(Verb) - HTTP METHOD
  • ํ‘œํ˜„(Representations)

๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ๋‹ค.

 

REST API๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ ๋‘๊ฐ€์ง€๋ฅผ ๊ผญ ๊ธฐ์–ตํ•ด์•ผํ•œ๋А๋ฐ

1. URI๋Š” ์ •๋ณด์˜ ์ž์›์„ ํ‘œ์‹œํ•ด์•ผํ•œ๋‹ค.

2. ์ž์›์— ๋Œ€ํ•œ ํ–‰์œ„๋Š” HTTP Method(GET,POST,PUSH,DELETE)๋กœ ํ‘œํ˜„ํ•œ๋‹ค.

 

๋‘๋ฒˆ์งธ ๋‚ด์šฉ์€ ์–ด์ฐŒ๋ณด๋ฉด URI์— ๋™์‚ฌ๊ฐ€ ๋“ค์–ด๊ฐ€๋ฉด ์•ˆ๋œ๋‹ค๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค.

 

REST API์˜ ์˜ˆ์‹œ๋ฅผ ๋ณด์—ฌ์ฃผ๋ฉด

 

[POST] /users ๋Š” ์ƒˆ๋กœ์šด ์œ ์ € ๋“ฑ๋ก์„ ์˜๋ฏธํ•œ๋‹ค.

[GET] /users๋Š” ์ „์ฒด ์œ ์ € ์กฐํšŒ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

[PATCH] /users/userID/1 ์€ userID๊ฐ€ 1์ธ ์œ ์ €์˜ ์ •๋ณด๋ฅผ ์ˆ˜์ •ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

[PATCH] /users/d/userID/1 ์€ userID๊ฐ€ 1์ธ ์œ ์ €์˜ ์ •๋ณด๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. 

 

https://meetup.toast.com/posts/92

 

REST API ์ œ๋Œ€๋กœ ์•Œ๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ : NHN Cloud Meetup

REST API ์ œ๋Œ€๋กœ ์•Œ๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ

meetup.toast.com

 

https://khj93.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-REST-API%EB%9E%80-REST-RESTful%EC%9D%B4%EB%9E%80

 

[๋„คํŠธ์›Œํฌ] REST API๋ž€? REST, RESTful์ด๋ž€?

REST API๋ž€ REST๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ API๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. REST API๋ฅผ ์•Œ๊ธฐ ์œ„ํ•ด REST๋ถ€ํ„ฐ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. REST๋ž€? REST(Representational State Transfer)์˜ ์•ฝ์ž๋กœ ์ž์›์„ ์ด๋ฆ„์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ํ•ด๋‹น ์ž์›..

khj93.tistory.com

๐Ÿ‹ API ๋ฆฌ์ŠคํŠธ์—… ํ•ด๋ณด๊ธฐ

 

์œ„์™€ ๊ฐ™์ด ๊ตฌ์„ฑํ•ด๋ณด์•˜๋‹ค. DELETE์˜ ๊ฒฝ์šฐ๋Š” ๋ฒ„๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๊ธฐ์— ์‚ญ์ œํ•˜๊ณ  ์‹ถ์€ ์ •๋ณด์˜ ๊ฒฝ์šฐ status๋งŒ d๋กœ ๋ฐ”๊พธ์—ˆ๋‹ค. 

RestAPI๋ฅผ ์งœ๋ฉด์„œ ์•„์‰ฌ์› ๋˜๊ฑด ๊ธฐ๋Šฅ๋ณ„๋กœ API๋ฅผ ์งฐ์–ด์•ผ ํ–ˆ๋Š”๋ฐ ํ™”๋ฉด๋ณ„๋กœ API๋ฅผ ์งœ๋‹ค๋ณด๋‹ˆ ๋™์ผํ•œ ์ฟผ๋ฆฌ๋ฅผ ๋˜ ๋„ฃ๊ณ  ํ•ด๋ฒ„๋ ค์„œ ์ผ์„ ์—ฌ๋Ÿฌ๋ฒˆ ํ•˜๋Š” ๊ผด์ด ๋˜์–ด๋ฒ„๋ ธ๋‹ค. ๋‹ค์Œ๋ฒˆ์—” ํ™”๋ฉด๋ณด๋‹จ ๊ธฐ๋Šฅ์œ„์ฃผ๋กœ ์งœ๋ณด์ž.!

 

๐Ÿ’™ REST API ๋ช…์„ธ์„œ

 

API๋ช…์„ธ์„œ ์ตœ์ข….xlsx
4.15MB

๐Ÿ‹ ์Šคํ”„๋ง๋ถ€ํŠธ๋กœ ๊ตฌํ˜„

 

๋‚˜๋Š” ์Šคํ”„๋ง๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ Controller,Service(CUD),Provider(Read),Dao๋กœ ๊ตฌ์„ฑํ–ˆ๋‹ค.

 

๋ชจ๋“  ์˜์ƒ์„ ์กฐํšŒํ•˜๋Š” API๋ฅผ ๋งŒ๋“œ๋Š” ๊ณผ์ •์„ Controller,Service,Provider,Dao๋ฅผ ํ†ตํ•ด  ์„ค๋ช…ํ•ด๋ณด๊ฒ ๋‹ค. 

 

๋จผ์ € Controller๋‹จ ๋ถ€ํ„ฐ ๋ณด์ž. 

 

ํด๋ž˜์Šค ๋ฐ”๊นฅ์— RestController์™€ RequestMapping ์„ค์ •์„ ํ•ด์ค€๋‹ค. 

 

getVideos ํ•จ์ˆ˜ ์œ„์— GET ๋ฉ”์„œ๋“œ์˜ URI๋ฅผ ํ‘œ์‹œํ•ด์ฃผ๋Š” GetMapping ์–ด๋…ธํ…Œ์ด์…˜์„ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค.

์˜์ƒ์„ ์กฐํšŒํ•˜๋ฉด ์—ฌ๋Ÿฌ ์˜์ƒ์˜ ์ •๋ณด๋“ค์ด ๋‚˜์™€์•ผํ•˜๊ธฐ์— List๋กœ ๋ฐ›์•„์ค„ ๊ฒƒ์ด๋‹ค.

 

 

์—ฌ๊ธด Provider๋‹จ์ธ๋ฐ, Provider๋Š” ์กฐํšŒ๋ฅผ ํ•˜๊ณ , Service๋Š” Create,Update,Delete๋ฅผ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๊ธฐ๋Šฅ์„ ๋‚˜๋ˆด๋‹ค. ์ด๋ฒˆ์—๋Š” ์ „์ฒด ์˜์ƒ์กฐํšŒ๋ฅผ ํ•ด์•ผํ•˜๊ธฐ์— Provider์—์„œ ์ž‘์—…์„ ํ•ด์•ผํ•œ๋‹ค. 

 

๋งˆ์ง€๋ง‰์€ ํ•ต์‹ฌ์ธ Dao์ด๋‹ค.

 

์‹ค์งˆ์ ์œผ๋กœ ์—ฌ๊ธฐ์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ถ€ํ„ฐ ์ •๋ณด๋ฅผ ์ ‘๊ทผํ•˜๊ณ , ์ด๋ฅผ ๋„์™€์ฃผ๋Š” ์ž๋ฐ”์˜ API๊ฐ€ jdbc Template์ด๋‹ค.

 

 

 

๐Ÿ‹ ๋‚ด๊ฐ€ ๋งŒ๋“  Rest API๋ฅผ ๋ฆฌ์•กํŠธ์— ์—ฐ๊ฒฐํ•ด๋ณด์ž! 

 

๋‚˜๋Š” ์Šคํ”„๋ง๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ 9000๋ฒˆ ํฌํŠธ์—์„œ ์—ด์—ˆ๊ณ  , ๋ฆฌ์•กํŠธ๋ฅผ 3000๋ฒˆ ํฌํŠธ์—์„œ ์—ด์—ˆ๋‹ค. ์ด๋Ÿฌ๋‹ค ๋ณด๋‹ˆ ๋‹ค๋ฅธ ํฌํŠธ์—์„œ ์ž์›์„ ๊ณต์œ ํ•˜๋Š” ์ƒํ™ฉ์ด ์ƒ๊ฒจ๋ฒ„๋ ธ๊ณ  ์—ญ์‰ฌ๋‚˜ CORS ์—๋Ÿฌ๋ฅผ ๋งŒ๋‚˜๊ณ  ๋ง์•˜๋‹ค.

 

https://meaningland02.tistory.com/44

 

[Springboot,React] CORS ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•

๐Ÿ“ŒCORS๋ž€? Cross-Origin-Resource-Sharing Polict์˜ ์•ฝ์ž๋กœ ๋‹ค๋ฅธ ์ถœ์ฒ˜์˜ ์ž์›์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •ํ•˜๋Š” ๊ถŒํ•œ ์ฒด์ œ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‚ด๊ฐ€ ์Šคํ”„๋ง ํ”„๋กœ์ ํŠธ๋Š” 9000๋ฒˆ ํฌํŠธ์—์„œ ์—ด์—ˆ๋Š”๋ฐ ๋ฆฌ์•กํŠธ๋Š” 3000๋ฒˆ ํฌํŠธ

meaningland02.tistory.com

์—ฌ๊ธฐ์— ํ•ด๊ฒฐ๊ณผ์ •์„ ์ž˜ ์ ์–ด๋†“์•˜๋‹ค.

 

์œ ํŠœ๋ธŒ ํ™ˆํ™”๋ฉด์„ ๋ฐ๋ชจ๋กœ ๊ตฌ์„ฑํ•ด๋ณด์•˜๋‹ค. ๋‚ด๊ฐ€ ๋งŒ๋“  api๊ฐ€ ์ด๋ ‡๊ฒŒ ์—ฐ๊ฒฐ๋˜๋‹ค๋‹ˆ ๊ฐ๊ฒฉ์Šค๋Ÿฌ์šด ์ˆœ๊ฐ„์ด ์•„๋‹ ์ˆ˜ ์—†๋‹ค.(?)

 

๐Ÿ’™ ์ตœ์ข…์ฝ”๋“œ๋Š” ์—ฌ๊ธฐ์„œ ํ™•์ธํ•ด๋ณด์„ธ์š” : https://github.com/JjungminLee/YoutubeClone_Project

728x90