REST API
REST API
๐ซ REST API
๐ซง API
- Application Programming Interface
- ์์ฉ ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉํ ์ ์๋๋ก ๋ค๋ฅธ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ ์ดํ ์ ์๊ป ๋ง๋ ์ธํฐํ์ด์ค
API๋ฅผ ์ฌ์ฉํ๋ฉด ๋ด๋ถ ๊ตฌํ ๋ก์ง์ ์์ง ๋ชปํด๋ ์ ์๋์ด ์๋ ๊ธฐ๋ฅ์ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์์
- ์ฌ๊ธฐ์ ์ธํฐํ์ด์ค๋ ์ด๋ค ์ฅ์น๊ฐ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ฐฉ๋ฒ์ ๋งํ๋ค.
- i.e. ๋ง์ฐ์ค, ํค๋ณด๋, ํฐ์นํจ๋
๐ซง REST
- Representational State Transfer, ์์ ์ํ ์ ๋ฌ?
- ์์์ ์ด๋ฆ์ผ๋ก ๊ตฌ๋ถํ์ฌ ์์์ ์ํ๋ฅผ ๊ตํํ๋ ๊ฒ์ ์๋ฏธ
์๋ฒ์ ํด๋ผ์ด์ธํธ ํต์ ๋ฐฉ์ ์ค ํ๋
HTTP URI
๋ฅผ ํตํดResource
์ ๋ช ์ํ๊ณ ,HTTP Method
๋ฅผ ํตํด ํด๋นResource
์ ๋ํCRUD Operation
์ ์ ์ฉํ๋ ๊ฒ- ์์์ ๊ตํํ๋ ๊ฒ
- ๊ทธ ๊ฒฐ๊ณผ๋ฅผ
HTTP Status Code
๋ก ์๋ตํ๋ ๊ฒ
๐ซง Resource
Collection
: ๋ณต์์ ์์์ ๊ฐ๋ฆฌํค๋ ์์https://api.example.com/topics
Element
: ๋จ์์ ์์์ ๊ฐ๋ฆฌํค๋ ์์https://api.example.com/topics/1234
https://api.example.com/topics/rest-api
๐ซง Method
- CRUD Operation
- Create :
POST
- Read :
GET
- Update :
PUT
,PATCH
- Delete :
DELETE
- Create :
๐ซง REST ํน์ง
- Server-Client ๊ตฌ์กฐ
- ์์์ด ์๋ ์ชฝ์ด Server, ์์์ ์์ฒญํ๋ ์ชฝ์ด Client
- ์๋ฒ์ ํด๋ผ์ด์ธํธ๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ๋ถ๋ฆฌ๋์ด ์์ด์ผ ํจ
- Stateless
- ์์ฒญ ๊ฐ์ ํด๋ผ์ด์ธํธ ์ ๋ณด๊ฐ ์๋ฒ์ ์ ์ฅ๋์ด์๋ ์๋จ (๊ท์น)
- ์๋ฒ๋ ๊ฐ ์์ฒญ์ ์์ ํ ๋ ๋ฆฝ์ ์ผ๋ก ์ฒ๋ฆฌํด์ผ ํจ
- ์ด์ ์์ฒญ์ด ๋ค์ ์์ฒญ์ ์ํฅ์ ์ฃผ๋ฉด ์๋จ
- Cacheable
- ํด๋ผ์ด์ธํธ๋ ์๋ต์ ์บ์ํ ์ ์์ด์ผ ํจ
- HTTP ํ๋กํ ์ฝ์ ๊ทธ๋๋ก ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ HTTP์ ํน์ง์ธ ์บ์ฑ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์
- ๋๋์ ์์ฒญ์ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ์ํด ์บ์๋ฅผ ์ฌ์ฉ
- ํด๋ผ์ด์ธํธ๋ ์๋ต์ ์บ์ํ ์ ์์ด์ผ ํจ
- ๊ณ์ธตํ (Layered System)
- ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ ๊ตฌ์ฑ๊ณผ ์๊ด์์ด REST API ์๋ฒ๋ก ์์ฒญ
- ์๋ฒ๋ ๋ค์ค ๊ณ์ธต์ผ๋ก ๊ตฌ์ฑ๋ ์ ์์ (๋ก๋ ๋ฐธ๋ฐ์ฑ, ๋ณด์ ์์, ์บ์ ๋ฑ)
- Code on Demand (Optional)
- ์์ฒญ์ ๋ฐ์ผ๋ฉด ์๋ฒ์์ ํด๋ผ์ด์ธํธ๋ก ์ฝ๋ ๋๋ ์คํฌ๋ฆฝํธ(๋ก์ง)์ ์ ๋ฌํ์ฌ ํด๋ผ์ด์ธํธ ๊ธฐ๋ฅ ํ์ฅ
- ์ธํฐํ์ด์ค ์ผ๊ด์ฑ (Uniform Interface)
- ์ ๋ณด๊ฐ ํ์ค ํ์์ผ๋ก ์ ์ก๋๊ธฐ ์ํด ๊ตฌ์ฑ ์์๊ฐ ํตํฉ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณต
- HTTP ํ๋กํ ์ฝ์ ๋ฐ๋ฅด๋ ๋ชจ๋ ํ๋ซํผ์์ ์ฌ์ฉ ๊ฐ๋ฅํ๊ฒ๋ ์ค๊ณ
๐ซง REST ์ฅ์
- HTTP ํ์ค ํ๋กํ ์ฝ์ ์ฌ์ฉํ๋ ๋ชจ๋ ํ๋ซํผ์์ ํธํ๊ฐ๋ฅ
- ์๋ฒ์ ํด๋ผ์ด์ธํธ์ ์ญํ ์ ๋ช ํํ๊ฒ ๋ถ๋ฆฌ
- ์ฌ๋ฌ ์๋น์ค ์ค๊ณ์์ ์๊ธธ ์ ์๋ ๋ฌธ์ ๋ฅผ ์ต์ํ
๐ซง REST API
- REST ์ํคํ ์ฒ์ ์กฐ๊ฑด์ ์ค์ํ๋ ์ดํ๋ฆฌ์ผ์ด์ ํ๋ก๊ทธ๋๋ฐ ์ธํฐํ์ด์ค
RESTful
: REST ์ํคํ ์ฒ๋ฅผ ๊ตฌํํ๋ ์น ์๋น์ค
๐ซง REST API ํน์ง
- REST ๊ธฐ๋ฐ์ผ๋ก ์์คํ ์ ๋ถ์ฐํ์ฌ ํ์ฅ์ฑ๊ณผ ์ฌ์ฌ์ฉ์ฑ์ ๋์
- HTTP ํ์ค์ ๋ฐ๋ฅด๊ณ ์์ด ์ฌ๋ฌ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ๊ตฌํํ ์ ์์
๐ซง REST API ์ค๊ณ ๊ท์น
- ์น๊ธฐ๋ฐ์ REST API๋ฅผ ์ค๊ณํ ๊ฒฝ์ฐ์๋ URI๋ฅผ ํตํด ์์์ ํํํด์ผ ํจ
https://api.example.com/v1/users/1234
- Resource : users
- Resource ID : 1234
- โญ ์์์ ๋ํ ์กฐ์์
Method
๋ฅผ ํตํด ํํํด์ผ ํจURI
์ ํ์๊ฐ ๋ค์ด๊ฐ๋ฉด ์๋จURI
๋ ์์์ ํํ
- HEADER๋ฅผ ํตํด CRUD๋ฅผ ํํํ์ฌ ๋์์ ์์ฒญํด์ผ ํจ
- ๋ฉ์ธ์ง๋ฅผ ํตํ ๋ฆฌ์์ค ์กฐ์
- HEADER๋ฅผ ํตํด content-type์ ์ง์ ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌ
- ๋ํ์ ํ์์ผ๋ก๋ HTML, XML, JSON, TEXT ๋ฑ์ด ์์
- ์ด๊ฑด
REST
๊ฐ ์ ์ํ๋ ๊ฒ์ด ์๋
- ์ด๊ฑด
- ๋ฌธ๋ฒ, ํ๊ธฐ๋ฒ
- URI์๋ ์๋ฌธ์๋ฅผ ์ฌ์ฉ
- Resource์ ์ด๋ฆ์ด๋ URI๊ฐ ๊ธธ์ด์ง ๊ฒฝ์ฐ ํ์ดํ(-)์ ์ฌ์ฉ
- ์ธ๋๋ฐ(_)๋ ์ฌ์ฉํ์ง ์์
- ํ์ผ ํ์ฅ์๋ URI์ ํฌํจํ์ง ์์
๐ซ Ref
์ฐธ๊ณ : โ๊ธฐ๊ณ๋ค์ ๋ํ๋ฒ - REST APIโ
์ฐธ๊ณ : โโREST APIโ์ ๋ํด [ ์คํ๋ง ๋ถํธ (Spring Boot) ]โ
์ด ๊ธฐ์ฌ๋ ์ ์๊ถ์์ CC BY 4.0 ๋ผ์ด์ผ์ค๋ฅผ ๋ฐ๋ฆ
๋๋ค.