SpringFramework 08. REST API - swkim0128/PARA GitHub Wiki
OPEN API๋ ํ๋ก๊ทธ๋๋ฐ์์ ์ฌ์ฉํ ์ ์๋ ๊ฐ๋ฐฉ๋์ด ์๋ ์ํ์ interface
naver, kakao ๋ฑ ํฌํธ ์๋น์ค ์ฌ์ดํธ๋ ํต๊ณ์ฒญ, ๊ธฐ์์ฒญ, ์ฐ์ฒด๊ตญ ๋ฑ๊ณผ ๊ฐ์ ๊ด๊ณต์, ๊ณต๊ณต ๋ฐ์ดํฐ ํฌํธ์ด ๊ฐ์ง๊ณ ์๋ ๋ฐ์ดํฐ๋ฅผ ์ธ๋ถ ์์ฉ ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉํ ์ ์๋๋ก OPEN API๋ฅผ ์ ๊ณตํ๊ณ ์๋ค.
OPEN API์ ํจ๊ป ๊ฑฐ๋ก ๋๋ ๊ธฐ์ ์ด REST์ด๋ฉฐ, ๋๋ถ๋ถ์ OPEN API๋ REST๋ฐฉ์์ผ๋ก ์ง์.
2000๋ ๋ ๋ก์ด ํ๋ฉ(Roy Fielding)์ ๋ฐ์ฌํ์ ๋ ผ๋ฌธ์ ์ต์ด๋ก ์๊ฐ
REST๋ Representational State Transfer์ ์ฝ์ด๋ก ํ๋์ URI๋ ํ๋์ ๊ณ ์ ํ ๋ฆฌ์์ค (Resource)๋ฅผ ๋ํํ๋๋ก ์ค๊ณ๋๋ค๋ ๊ฐ๋ ์ ์ ์ก๋ฐ์์ ๊ฒฐํฉํด์ ์ํ๋ ์์ ์ ์ง์ ํ๋ค.
์น์ ์ฅ์ ์ ์ต๋ํ ํ์ฉํ ์ ์๋ ์ํคํ ์ฒ(์ค๊ณ๊ตฌ์กฐ)๋ก์จ REST๋ฅผ ๋ฐํ
HTTP URI๋ฅผ ํตํด ์ ์ดํ ์์(Resource)๋ฅผ ๋ช ์ํ๊ณ , HTTP Method(GET, POST, PUT, DELETE)์ ํตํด ํด๋น ์์(Resource)๋ฅผ ์ ์ดํ๋ ๋ช ๋ น์ ๋ด๋ฆฌ๋ ๋ฐฉ์์ ์ํคํ ์ฒ
- ์์ (Resource) - URI
- ํ์ (verb) - HTTP Method
- ํํ (Representations)
์ ํํ๋ HTTP URI๋ก ๋ฆฌ์์ค๋ฅผ ์ ์ํ๊ณ HTTP method๋ก ๋ฆฌ์์ค์ ๋ํ ํ์๋ฅผ ์ ์ํ๋ค.
๋ฆฌ์์ค๋ JSON, XML๊ณผ ๊ฐ์ ์ฌ๋ฌ ๊ฐ์ง ์ธ์ด๋ก ํํํ ์ ์๋ค.
- ๊ธฐ์กด Service : ์์ฒญ์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ํ ํ ๊ฐ๊ณต๋ data๋ฅผ ์ด์ฉํ์ฌ ํน์ ํ๋ซํผ์ ์ ํฉํ ํํ์ View๋ก ๋ง๋ค์ด์ ๋ฐํ
- REST Service : data ์ฒ๋ฆฌ๋ง ํ๋ค๊ฑฐ๋, ์ฒ๋ฆฌ ํ ๋ฐํ๋ data๊ฐ ์๋ค๋ฉด JSON์ด๋ XML ํ์์ผ๋ก ์ ๋ฌ. View์ ๋ํด์๋ ์ ๊ฒฝ ์ธ ํ์๊ฐ ์๋ค. >> ์ด๋ฌํ ์ด์ ๋ก Open Api์์ ๋ง์ด ์ฌ์ฉ
๊ธฐ์กด์ ์ ์ก๋ฐฉ์๊ณผ๋ ๋ฌ๋ฆฌ ์๋ฒ๋ ์์ฒญ์ผ๋ก ๋ฐ์ ๋ฆฌ์์ค์ ๋ํด ์์ํ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ค.
๊ธฐ์กด์ GET/POST ์ธ์ PUT, DELETE ๋ฐฉ์์ ์ฌ์ฉํ์ฌ ๋ฆฌ์์ค์ ๋ํ CRUD ์ฒ๋ฆฌ๋ฅผ ํ ์ ์๋ค.
HTTP URI์ ํตํด ์ ์ดํ ์์(Resource)์ ๋ช ์ํ๊ณ , HTTP METHOD(GET/POST/PUT/DELETE)๋ฅผ ํตํด ํด๋น ์์(Resource)๋ฅผ ์ ์ดํ๋ ๋ช ๋ น์ ๋ด๋ฆฌ๋ ๋ฐฉ์์ Architecture์ด๋ค.
๊ฐ์ฅ ํฐ ๋จ์ ์ ๋ฑ ์ ํด์ง ํ์ค์ด ์์ด '๋ค๋ค ์ด๋ ๊ฒ ์ฐ๋๋ผ' ์ ๋์ ์๋ฌต์ ์ธ ํ์ค๋ง ์ ํด์ ธ ์๋ค.
- ํ์ดํ(-)์ ์ฌ์ฉ ๊ฐ๋ฅํ์ง๋ง ์ธ๋๋ฐ(_)๋ ์ฌ์ฉํ์ง ์๋๋ค.
- ํน๋ณํ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ ๋๋ฌธ์ ์ฌ์ฉ์ ํ์ง ์๋๋ค.(๋์๋ฌธ์ ๊ตฌ๋ถ์ ํ๊ธฐ ๋๋ฌธ)
- URI ๋ง์ง๋ง์ ์ฌ๋์(/)๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค.
- ์ฌ๋์(/)๋ก ๊ณ์ธต ๊ด๊ณ๋ฅผ ๋ํ๋ธ๋ค.
- ํ์ฅ์๊ฐ ํฌํจ๋ ํ์ผ ์ด๋ฆ์ ์ง์ ํฌํจ์ํค์ง ์๋๋ค.
- URI๋ ๋ช ์ฌ๋ฅผ ์ฌ์ฉํ๋ค.
๊ธฐ์กด์ ์น ์ ๊ทผ ๋ฐฉ์๊ณผ REST API ๋ฐฉ์์ ์ฐจ์ด์
๊ธฐ์กด์ ๋ธ๋ก๊ทธ๋ฑ์ GET๊ณผ POST ๋ง์ผ๋ก ์์์ ๋ํ CRUD๋ฅผ ์ฒ๋ฆฌํ๋ฉฐ, URI๋ ์ก์ ์ ๋ํ๋๋ค.
REST๋ก ๋ณ๊ฒฝํ ๊ฒฝ์ฐ 4๊ฐ์ง method๋ฅผ ๋ชจ๋ ์ฌ์ฉํ์ฌ CRUD๋ฅผ ์ฒ๋ฆฌํ๋ฉฐ, URI๋ ์ ์ดํ๋ ค๋ ์์์ ๋ํ๋ธ๋ค.
-
Jackson library
-
list.jsp
-
AdminController.java