RESTful API : ์น ๊ฐ๋ฐ์์ ํ์์ ์ธ ์ํค๋ฑ์ฒ ์คํ์ผ
1. RESTful API ๊ฐ๋ ๊ณผ ์๋ฆฌ
๐ข RESTful API ๋ ?
Representational State Transfer API๋ฅผ ๊ฐ๋ฆฌํค๋ ๋ง๋ก,
์์ ์ฆ, Resource๐๋ฅผ ๋คํธ์ํฌ์์์ ํจ์จ์ ์ผ๋ก ์ ์กํ๊ธฐ ์ํ ์ํคํ ์ฒ ์คํ์ผ์ด๋ค.๐
๐ข RESTful API๊ฐ ๋คํธ์ํฌ์์ ์์์ ํจ์จ์ ์ผ๋ก ์ ์กํ๋ค๋ ๋ง์ด ๋ฌด์จ ์๋ฏธ์ผ๊น?
๊ทธ ์๋ฏธ๋ ์์ ์ ๊ทผ๊ณผ HTTP๋ฉ์๋ ํ์ฉ, ์ํ ์ ๋ณด์ ์ ๋ฌ, ์บ์ฑ ์ฒ๋ฆฌ ๋ฑ์ ์ธก๋ฉด์์ ์ดํดํ ์ ์๋ค.
RESTful API์ ํจ์จ์ฑ์ RESTful API๊ฐ ์์์ ๋จ์ํ๊ณ ์ง๊ด์ ์ผ๋ก ํํํ๊ณ ,
HTTP ํ๋กํ ์ฝ์ ๊ธฐ๋ฅ๊ณผ ํน์ง์ ์ ๊ทน์ ์ผ๋ก ํ์ฉํ๋ฉด์ ๊ฐ๋ฅํด์ง๋ค.
์์์ ํจ์จ์ ์ธ ์ ์ก์ ๋คํธ์ํฌ ๋์ญํญ์ ์ต์ ํ, ์๋ฒ ๋ฐ ํด๋ผ์ด์ธํธ ์์ ์ฌ์ฉ์ ์ต์ํ ๋ฑ์ ํตํด
์ ์ฒด์ ์ธ ์์คํ ์ฑ๋ฅ์ ํฅ์์ํค๋ ์ฅ์ ์ ์ ๊ณตํ๋ค.
๐ข RESTful API๋ ์ฃผ์ ์์น์ ๊ธฐ๋ฐ์ ๋๊ณ ์์ฑ์ ํ๋๋ฐ, ๋ค์์ ๊ธฐ์ตํด์ผํ๋ค.
- ์์(Resource๐)์งํฅ์ : RESTful API์ ์ฃผ์ ์ปจ์
์ ์์์ด๊ณ ๊ฐ ์์์ URI(Uniform Resource Identifier ๊ณ ์ ํ ์๋ณ์)๋ฅผ ๊ฐ๊ณ ์๋ค.
- ๋ฌด์ํ์ฑ(Stateless) : ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ๊ด๋ฆฌํ์ง ์๊ณ ๊ฐ ์์ฒญ์ ํ์ํ ์ ๋ณด๋ฅผ ํฌํจํ์ฌ ์์ ํ ์์ฒญ์ผ๋ก ์ฒ๋ฆฌํ๋ค.
- ํต์ผ๋ ์ธํฐํ์ด์ค : RESTful API๋ ํ์ค HTTP ๋ฉ์๋(GET,POST,PUT,DELETE ๋ฑ)๋ฅผ ์ฌ์ฉํ์ฌ ์์์ ๋ํ ์์
(CRUD operation)์ ์ ์ํ๋ค.
- ์์ฒดํํ์ฑ(Self-descriptive) : API ์์ฒญ๊ณผ ์๋ต์ ์์ฒด์ ์ผ๋ก ์ดํดํ ์ ์๋ ๊ตฌ์กฐ๋ก ๊ตฌ์ฑ๋์ด์ผํ๋ค. ์์ฒญ ํค๋์ MIME ํ์
์ ๋ช
์ํ๊ฑฐ๋ ์๋ต์ ์ ์ ์ํ ์ฝ๋์ ํ์ด๋ก๋(payload)๋ฅผ ํฌํจํ๋๊ฒ ๊ทธ ์๋ค.
- ๊ณ์ธต ๊ตฌ์กฐ : ์๋ฒ์ ํด๋ผ์ด์ธํธ ์ฌ์ด์ ์ค๊ฐ ๊ณ์ธต(๋ก๋ ๋ฒจ๋ฐ์, ์บ์ฑ ์๋ฒ ๋ฑ)์ ํฌํจํ์ฌ ํ์ฅ์ฑ๊ณผ ๋ณด์์ฑ์ ๊ฐ์ ํ ์์๋ค.
- ์บ์ฑ ์ฒ๋ฆฌ(Cacheable) : RESTful API๋ ์บ์ฑ์ ํ์ฉํ์ฌ ์ด์ ์ ์์ฒญ๋ ์์์ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ ์ฌ์ฌ์ฉํ๋ค. ํด๋ผ์ด์ธํธ๋ ํ์ํ ์์์ ์บ์์์ ๊ฐ์ ธ์ค๋ฏ๋ก ์๋ฒ์ ๋ํ ์์ฒญ์ ์ค์ด๊ณ ๋คํธ์ํฌ ๋์ญํญ์ ์ ์ฝํ ์ ์๋ค. ๋ํ, RESTful API ์๋ฒ์์ *ํธ๋์ญ์
(transaction)์ด ๋ฐ์ํ์ง ์์ ์ ์ฒด ์๋ต์๊ฐ, ์์ ์ด์ฉ๋ฅ , ์ฑ๋ฅ์ด ํฅ์ํ๋ค.
*๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํ๋์ ๋ ผ๋ฆฌ์ ๊ธฐ๋ฅ์ ์ํํ๊ธฐ ์ํ ์์ ์ ๋จ์๋ก์, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์์ ๋ณต๊ตฌ ๋ฐ ๋ณํ ์ํ ์ ์ฒ๋ฆฌ๋๋ ์์ ์ ๋ ผ๋ฆฌ์ ๋จ์์ด๋ค.
๐ข ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ๊ด๋ฆฌํ์ง ์๋ ์ด์
- ๋ฌด์ํ์ฑ(Stateless) : RESTful API์ ํต์ฌ ์์น ์ค ํ๋๋ก, ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ์ด์ ์์ฒญ์ ๊ธฐ์ตํ์ง ์๊ณ ๊ฐ ์์ฒญ์ ๋
๋ฆฝ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ค. ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ๊ด๋ฆฌํ์ง ์์ผ๋ฉด ํด๋ผ์ด์ธํธ ๊ฐ์ ์์ฒญ์ ์๋ก ๊ตฌ๋ถํ์ง ์์๋ ๋๊ธฐ ๋๋ฌธ์ ์๋ฒ์ ๋ถํ๋ฅผ ์ค์ด๊ณ ํ์ฅ์ฑ์ ํฅ์์ํฌ ์ ์๋ค.
- ํ์ฅ์ฑ : RESTful API๋ ์๋ฒ์ ํ์ฅ์ฑ์ ํฅ์์ํค๊ธฐ ์ํด ์ํ๋ฅผ ํด๋ผ์ด์ธํธ ์ธก์์ ๊ด๋ฆฌํ๋ค. ํด๋ผ์ด์ธํธ ์์ฒด์ ์ผ๋ก ์ํ๋ฅผ ์ถ์ ํ๊ณ ๊ด๋ฆฌํ์ฌ ์ฌ๋ฌ ์๋ฒ ์ธ์คํด์ค๋ก์ ํ์ฅ์ด ์ฉ์ดํด์ง๋ค. ๋ํ, ์๋ฒ๋ ์ํ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ฑฐ๋ ๋๊ธฐํํ๋ ๋ฐ ์์๋๋ ์ค๋ฒํค๋๋ฅผ ์ค์ผ ์ ์๋ค.
- ํด๋ผ์ด์ธํธ์ ์์จ์ฑ : ํด๋ผ์ด์ธํธ ์์ฒด์ ์ผ๋ก ์ํ๋ฅผ ๊ด๋ฆฌํ์ฌ ํด๋ผ์ด์ธํธ๋ ๋
๋ฆฝ์ ์ผ๋ก ๋์ํ๋ค. ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ ์ข
์๋์ง ์๊ณ ํ์์ ๋ฐ๋ผ ์๋ฒ๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋ ์ฌ๋ฌ ์๋ฒ ๊ฐ์ ์ ํํ ์ ์๋ค. ์ด๋ ํด๋ผ์ด์ธํธ์ ์ ์ฐ์ฑ๊ณผ ๋
๋ฆฝ์ฑ์ ๋์ธ๋ค.
- ๋คํธ์ํฌ ๋ถํ ๊ฐ์ : ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ํต์ ์์ ์์๋๋ ๋ฐ์ดํฐ์ ์์ ์ค์ผ ์ ์๋ค.
์ฆ, RESTful API์์ ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ๊ด๋ฆฌํ์ง ์๋ ๊ฒ์ ํ์ฅ์ฑ, ๋ฌด์ํ์ฑ, ํด๋ผ์ด์ธํธ์ ์์จ์ฑ, ๋คํธ์ํฌ ๋ถํ ๊ฐ์ ๋ฑ ์ด์ ์ ์ ๊ณตํ๊ธฐ ์ํ ์ ํ์ด๋ค. RESTful API๋ฅผ ํตํด ํด๋ผ์ด์ธํธ๋ ํ์ํ ์ํ ์ ๋ณด๋ฅผ ์ ๊ณตํ๊ณ , ์๋ฒ๋ ์ํ์ ๋ํ ์๋ต์ ์ฒ๋ฆฌํ๋ ๋จ์ํ๊ณ ์ ์ฐํ ์ํคํ ์ฒ๋ฅผ ๊ตฌํํ ์ ์๋ค.
๐ข RESTful API์ ์ฌ์ฉ ๊ณผ์
์์ ์๋ณ โ HTTP ๋ฉ์๋ ์ ํ โ ์์ฒญ ๊ตฌ์ฑ โ ์์ฒญ ์ ์ก โ ์๋ต ์ฒ๋ฆฌ
์์์๋ณ : ์์์ URI(๊ณ ์ ํ ์๋ณ์)๋ฅผ ๊ฐ๊ณ ์์ผ๋ฏ๋ก API๋ฅผ ์ฌ์ฉํ์ฌ ์ ๊ทผํ๊ณ ์ํ๋ ์์์ ์๋ณํ๋ค.
HTTP ๋ฉ์๋ ์ ํ : ์๋ณํ ์์์ ๋ํด ์ํํ๊ณ ์ํ๋ ์์ ์ ์ ํฉํ HTTP ๋ฉ์๋๋ฅผ ์ ํํ๋ค.
์์ฒญ ๊ตฌ์ฑ : ์ ํํ HTTP ๋ฉ์๋์ ํจ๊ป ์์ฒญ์ ๊ตฌ์ฑํฉ๋๋ค. ์์ฒญ์๋ ํ์ํ ๋งค๊ฐ๋ณ์, ํค๋, ๋ฐ๋(payload) ๋ฑ์ ํฌํจํ ์ ์๋ค.
์์ฒญ ์ ์ก : ๊ตฌ์ฑํ ์์ฒญ์ HTTP ํด๋ผ์ด์ธํธ๋ฅผ ํตํด ์๋ฒ๋ก ์ ์กํ๋ค.
์๋ต ์ฒ๋ฆฌ : ์๋ฒ๋ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ , ํด๋น ์์ ์ ๋ํ ์๋ต์ ๋ฐํํ๋ค.
2. HTTP ๋ฉ์๋์ ๋ฆฌ์์ค๐ ๊ด๋ฆฌ
๐ข RESTful API = ๋ฆฌ์์ค URI + HTTP Methods
RESTful API๋ ์์์ URI์ HTTP ๋ฉ์๋๋ฅผ ์กฐํฉํ์ฌ ์ํ๋ ๋์์ ์ ์ํ๋ค.
๐ข HTTP Methods
METHOD ์ญํ CRUD POST POST๋ฅผ ํตํด ํด๋น URI๋ฅผ ์์ฒญํ๋ฉด ๋ฆฌ์์ค๋ฅผ ์์ฑํ๊ฑฐ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ถํ๋ค. Create GET GET์ ํตํด ๋ฆฌ์์ค์ ์กฐํ๋ฅผ ์์ฒญํ๋ค. ์๋ฒ๋ ํด๋น ๋ฆฌ์์ค๋ฅผ ๋ฐํํ๋ค. Read PUT PUT์ ํตํด ํน์ ๋ฆฌ์์ค๋ฅผ ์ ๋ฐ์ดํธ ๋๋ ์์ฑํ๋ค. ์ ์ฒด ๋ฆฌ์์ค๋ฅผ ์ ๋ฐ์ดํธํ ๋ ์ฌ์ฉํ๋ค. Update PATCH PATCH๋ฅผ ํตํด ํน์ ๋ฆฌ์์ค์ ์ผ๋ถ๋ฅผ ์ ๋ฐ์ดํธํ๋ค. Update DELETE DELETE๋ฅผ ํตํด ํด๋น ๋ฆฌ์์ค๋ฅผ ์ญ์ ํ๋ค. Delete
๐ข ๋ฆฌ์์ค ๊ด๋ฆฌ
ํด๋ผ์ด์ธํธ๋ ๊ฐ ๋ฆฌ์์ค์ ๊ณ ์ ํ URI๋ฅผ ํตํด ์์์ ์ ๊ทผํ๊ณ ์กฐ์ํ๋ค.
์๋ฅผ ๋ค์ด โ/usersโ๋ ์ฌ์ฉ์ ๋ฆฌ์์ค์ URI์ด๋ฉฐ โ/users/{id}โ ๋ ํน์ ์ฌ์ฉ์๋ฅผ ์๋ณํ๋ URI์ด๋ค.
์ด๋ฌํ URI ๋ฅผ ํตํด ํด๋ผ์ด์ธํธ๋ ํน์ ํ ํ๋์ ์ํํ ์ ์๋ค.
์์์ ๋ํ ํ์๋ HTTP ๋ฉ์๋๋ฅผ ํตํด์ ํํํ๊ณ URI๋ ์์์ ํํํ๋ค.
๐ข ๋ฆฌ์์ค ๊ด๋ฆฌ์ ์ผ๊ด๋ URI ์ค๊ณ์ HTTP ๋ฉ์๋ ์ฌ์ฉ์ผ๋ก
์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ฐ์ ์ํธ์์ฉ์ ๋จ์ํํ๊ณ ์ผ๊ด์ฑ์ ์ ์งํ๋ค.
์ด๋ฌํ ๋ฐฉ๋ฒ์ ๊ฐ๊ฒฐํ๊ณ ์ง๊ด์ ์ธ API๋ฅผ ๊ตฌ์ถํ ์ ์๋๋ก ํ๋ค.
๐ข HTTP ๋ฉ์๋์ ๋ฆฌ์์ค ๊ด๋ฆฌ์ ์ด์
RESTful API์ HTTP ๋ฉ์๋์ ๋ฆฌ์์ค ๊ด๋ฆฌ๋ ํ์คํ๋ ๋ฐฉ์์ผ๋ก ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ํต์ ์ ์ง์ํ๋ค.
๋ํ, ํ์ฅ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ๋์ธ๋ค.
์ด๋ฅผ ํตํด ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ์ผ๊ด๋ ์ธํฐํ์ด์ค๋ฅผ ์ ์งํ ์ ์๋๋กํ๊ณ ,
ํจ์จ์ ์ธ ๋ฆฌ์์ค ๊ด๋ฆฌ๋ฅผ ์คํํ ์ ์๋ค.
3. RESTful API ๋์์ธ ์์น๊ณผ ์ต์ ํ ์ ๋ต
๐ข RESTful API ๋์์ธ ์์น
- ์์ ์ค์ฌ(Resource-Centric) : API ์๋ํฌ์ธํธ๋ ์์์ ์ค์ฌ์ผ๋ก ์ค๊ณ๋์ด์ผ ํ๋ค.
์๋ฅผ ๋ค์ด /users ๋ ๊ถ์ฅํ์ง๋ง, /get-users๋ ๊ถ์ฅํ์ง ์๋๋ค. ํ์๋ ๋ฉ์๋๋ฅผ ํตํด์ ํํํ๋ค. - ํํ ๋ฐฉ์์ ์ผ๊ด์ฑ(Consistent Representation) : API์ ์๋ต์ ์ผ๊ด๋ ํํ ๋ฐฉ์์ ์ฌ์ฉํ๋ค.
๋๋ถ๋ถ JSON ํ์์ด ๋๋ฆฌ ์ฌ์ฉ๋๋ฉฐ, ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ํ๋๋ช ์ ์ผ๊ด์ฑ์ ์ ์งํด์ผํ๋ค. - ์ ์ ํ HTTP๋ฉ์๋ ์ฌ์ฉ(Proper Use of HTTP) : ์์
์ ์๋์ ๋ง๊ฒ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค.
- ์ ์ ํ ์ํ ์ฝ๋ ๋ฐํ(Proper Use of Status) : API ์๋ต์๋ ์ ์ ํ HTTP ์ํ ์ฝ๋๋ฅผ ํฌํจํด์ผํ๋ค.
- HATEOAS(Hypermedia as the Engine of Application State) : API ์๋ต์๋ ํ์ดํผ๋ฏธ๋์ด ๋งํฌ๋ฅผ ํฌํจํ์ฌ
ํด๋ผ์ด์ธํธ๊ฐ API์ ์ํ์ ์ฌ์ฉ ๊ฐ๋ฅํ ์์ ์ ํ์ํ ์ ์์ด์ผ ํ๋ค.
๐ข RESTful API ์ต์ ํ ์ ๋ต
- ์บ์ฑ ํ์ฉ : ์บ์ฑ์ ํ์ฉํ์ฌ ์ด์ ์ ์์ฒญ๋ ์์์ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ ์ฌ์ฌ์ฉํ๋ค.
- ์์ถ ๋ฐ ์์ถ ํด์ : ๋ฐ์ดํฐ๋ฅผ ์์ถ ์ ์กํ์ฌ ์ ์ก ์ฉ๋์ ์ค์ด๊ณ ๋คํธ์ํฌ ๋์ญํญ์ ์ ์ฝํ๋ค.
ํด๋ผ์ด์ธํธ์์๋ ์๋ต์ ์์ถ ํด์ ํ์ฌ ์ฌ์ฉํ ์ ์์ด์ผํ๋ค. - ํ์ด์ง(Pagination) : ๋๋์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ๋, API ์๋ต์ ํ์ด์ง๋ณ๋ก ๋๋์ด ์ ์กํ๊ณ ,
ํด๋ผ์ด์ธํธ์์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ์ฌ ํจ์จ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋๋ก ํ๋ค. - ์ ์ ํ ํํฐ๋ง๊ณผ ์ ๋ ฌ : ๋ฐ์ดํฐ ๊ฒ์์ ์ํ ํํฐ๋ง ๋ฐ ์ ๋ ฌ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ฌ
ํด๋ผ์ด์ธํธ๊ฐ ์ํ๋ ๋ฐ์ดํฐ์ ์ฝ๊ฒ ์ ๊ทผํ๊ณ ์ ๋ ฌํ ์ ์๋๋ก ํ๋ค.
4. RESTful API์ ํด๋ผ์ด์ธํธ์ ์ํธ์์ฉ
๐ข ์์ฒญ๊ณผ ์๋ต์ ํ๋ฆ์ ๊ดํ์ฌ
RESTful API์ ํด๋ผ์ด์ธํธ์ ์ํธ์์ฉ์ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ผ๋ก๋ถํฐ ์์ํ๋ค.
ํด๋ผ์ด์ธํธ๋ HTTP๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ API์ ์์ฒญ์ ๋ณด๋ด๋๋ฐ ํด๋น ์์ฒญ์๋ ์์(Resource)์ ๋ํด
์ํ๋ ์์ ์ ํจ๊ป ์ ์กํ๋ค. ๋ฟ๋ง ์๋๋ผ, ํ์์ ๋ฐ๋ผ ํด๋ผ์ด์ธํธ์ ์์ฒญ์๋ ํค๋์ ์ถ๊ฐ ์ ๋ณด๋ ์ธ์ฆ ํ ํฐ ๋ฑ์
ํฌํจํด์ ๋ณด๋ด๊ณ , ๋ฐ์ดํฐ๋ ์์ฒญ์ JSON ํ์ ๋ฑ์ผ๋ก ํฌํจํด์ ๋ณด๋ผ ์๋ ์๋ค.
ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญ์ ๋ง์น๋ฉด, API ์๋ฒ๋ ํด๋น ์์ฒญ์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ์ํํ๋ค.
์๋ฒ๋ ์์ฒญ๋ ์์์ด๋ ์์ ์ ๋ํด ์ ์ ํ ์ฒ๋ฆฌํ๊ณ , ํ์์ ๋ฐ๋ผ DB๋ ์ธ๋ถ ์๋น์ค์ ์ฐ๊ณํด ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ค.
๋ํ, ์๋ฒ๋ ์์ฒญ์ ๋ํด์ ๊ฒ์ฆ, ๋ฐ์ดํฐ ์ ํจ์ฑ ๊ฒ์ฌ, ๋น์ฆ๋์ค ๋ก์ง ๋ฑ์ ์ํํ๋ค.
์๋ฒ์ ์ฒ๋ฆฌ๊ฐ ๋๋๋ฉด, ์๋ฒ๋ ์๋ต์ ์์ฑํ๋ค. ์ด๋ฌํ ์๋ต์ HTTP ์ํ ์ฝ๋, ํค๋, ๋ฐ์ดํฐ ๋ณธ๋ฌธ ๋ฑ์ผ๋ก ์์ฑ๋๋ค.
HTTP ์ฝ๋๋ 200 OK, 201 Created, 400 Bad Request, 404 Not Found, 500 Internal Server Error ๋ฑ์ด ์๋ค.
์๋ต์ ๋ด์ฉ์๋ ์์ฒญ์ ๋ํ ๊ฒฐ๊ณผ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋๊ณ ๋๊ฐ JSON ํ์์ผ๋ก ๋ฐํ๋๋ค.
์๋ฒ๊ฐ ์๋ต์ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๋ฌํ๋ฉด, ํด๋ผ์ด์ธํธ๋ ํด๋น ์๋ต์ ์ฒ๋ฆฌํ๋ค.
ํด๋ผ์ด์ธํธ๋ HTTP ์ฝ๋๋ฅผ ํ์ธํ์ฌ ์๋ต์ ์ํ๋ฅผ ํ๋จํ๊ณ , ์๋ต ๋ด์ฉ์ ํ๊ธฐ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณต ๋ฐ ํ์ฉํด
์ฌ์ฉ์ ์ธํฐํ์ด์ค์ ๋ณด์ฌ์ฃผ๊ฑฐ๋ ๋ค์ ์์ฒญ์ ํ์ฉํ๋ค.
5. RESTful API์ ํ์ฅ์ฑ๊ณผ ์ ์ง๋ณด์
๐ข RESTful API์ ํ์ฅ์ฑ
RESTful API๋ ์ํ์ ์ผ๋ก ํ์ฅํ ์ ์๋ค. ์ฆ, ์ฌ๋ฌ ๋์ ์๋ฒ ์ธ์คํด์ค๋ฅผ ์ถ๊ฐํด ๋ถํ๋ฅผ ๋ถ์ฐ์ํฌ ์ ์๋ค๋ ๊ฒ์ด๋ค.
๋, ๋ก๋ ๋ฐธ๋ฐ์ ๊ฐ์ API ๊ฒ์ดํธ์จ์ด๋ฅผ ์ฌ์ฉํ์ฌ ์์ฒญ์ ์กฐ์ ํ๊ณ ๋ถ์ฐ๋ ์๋ฒ๋ค ๊ฐ์ ํต์ ์ ๊ด๋ฆฌํ ์ ์๋ค.
์๋ฅผ ๋ค์ด, ํด๋ผ์ฐ๋ ํ๊ฒฝ์์ API ์๋ฒ๋ฅผ ์ฌ๋ฌ ์ธ์คํด์ค๋ก ํ์ฅํ๋ฉด ๋ ๋ง์ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๋ค.
RESTful API๋ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ์์ ๋งค์ฐ ์ค์ํ ์ญํ ์ ์ํํ๋ค.
๋ง์ดํฌ๋ก์๋น์ค๋ ์์ ๋จ์๋ก ๊ตฌ์ฑ๋ ๋ ๋ฆฝ์ ์ธ ์๋น์ค๋ก ๊ตฌ์ฑ๋๋ฉฐ ๊ฐ๊ฐ์ ๋ง์ดํฌ๋ก์๋น์ค๋ RESTful API๋ฅผ ํตํด ํต์ ํ๋ค.
๋ง์ดํฌ๋ก์๋น์ค๋ฅผ RESTful API๋ฅผ ํตํด ๋ถ๋ฆฌํ๋ฉด ๊ฐ๋ณ์ ์ผ๋ก ๊ฐ๋ฐ, ๋ฐฐํฌ, ํ์ฅํ ์ ์๊ณ ๊ธฐ๋ฅ์ ๋ณ๊ฒฝํ๊ฑฐ๋ ์ถ๊ฐํ๋๋ฐ ์ฉ์ดํด์ง๋ค.
RESTful API๋ HTTP์ ์บ์ฑ ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์บ์ํ ์ ์๋ค.
๋์ผํ ์์ฒญ์ ๋ํ ์๋ต์ ์บ์ ์๋ฒ์ ์ ์ฅํ์ฌ ์ค๋ณต ์์ฒญ์ ์ค์ด๊ณ ์๋ต ์๊ฐ์ ์ค์ฌ ๋คํธ์ํฌ ๋ถํ๋ฅผ ๊ฐ์์ํค๊ณ ํ์ฅ์ฑ์ ํฅ์์ํจ๋ค.
์ด๋ฌํ ํ์ฅ์ฑ ์ ๋ต์ ๋๊ท๋ชจ ์ดํ๋ฆฌ์ผ์ด์
๊ณผ ๋ถ์ฐ ์์คํ
์ผ๋ก ๊ฐ์๋ก ์ค์ํ๋ฐ,
RESTfulAPI๋ฅผ ์ํ์ ์ผ๋ก ํ์ฅ์ํค๊ณ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ
์ฒ๋ฅผ ์ฌ์ฉํจ์ผ๋ก์จ ์ดํ๋ฆฌ์ผ์ด์
์ ๋์ฑ ์ ์ฐํ๊ณ ํ์ฅ ๊ฐ๋ฅํด์ง๋ค.
๐ข RESTful API์ ์ ์ง๋ณด์ ๊ฐ๋ฅ์ฑ
RESTful API์ ๋ฆฌ์์ค ๊ด๋ฆฌ์ HTTP ๋ฉ์๋๋ฅผ ์กฐํฉํ๋ ๋ฐฉ์์ ๊ฐ๋ฐ์๊ฐ API๋ฅผ ์ดํดํ๊ณ ์ฌ์ฉํ๊ธฐ ์ฝ๊ฒ ๋ง๋ ๋ค.
๋ง๋ถํ, API ๋์์ธ ์์น์ ํตํ ์ผ๊ด์ฑ ์๋ ๋ฐ์ดํฐ ๋ชจ๋ธ๊ณผ ์์ ๋ฐฉ์์ ์ ์ง๋ณด์๋ฅผ ์ฉ์ดํ๊ฒ ํ๋ค.
์ด๋ ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ฑฐ๋ ๋ณ๊ฒฝ์ด ํ์ํ ๋, ์ผ๊ด์ฑ ์๋ ์ธํฐํ์ด์ค๋ก ์์ ์๋๋ฅผ ๋์ฌ์ค๋ค.
RESTful API๋ ์ญํธํ์ฑ์ ์ ์งํด์ผํ๋ค. ๊ธฐ์กด API๋ฅผ ๋ณ๊ฒฝํ๊ฑฐ๋ ์ ๋ฐ์ดํธ ํ ๋๋ ๋ฐ๋์ ํ์ ํธํ์ฑ์ ๊ณ ๋ คํ์ฌ ์์ ํด์ผํ๋ค.
์ด๋ฅผ ์ํด API ๋ฒ์ ๊ด๋ฆฌ, ์ ํํ ๋ฌธ์ํ, ์ ์ ํ ์๋ฌ ์ฒ๋ฆฌ ๋ฑ์ ๊ณ ๋ คํด์ผ ํ๋ค.
์ญํธํ์ฑ์ ์ ์งํจ์ผ๋ก์จ ํด๋ผ์ด์ธํธ ์ดํ๋ฆฌ์ผ์ด์ ์ ์ํ ํ๊ฒ ๋์ํ๋ฉฐ, ์ ์ง ๊ณผ์ ์์ ๋ถํ์ํ ํธํ์ฑ ๋ฌธ์ ๋ฅผ ์ต์ํํ ์ ์๋ค.
RESTful API๋ ๋น์ฆ๋์ค ๋ก์ง์ ์๋ฒ ์ธก์์ ์ค์ ์ง์คํํ์ฌ ์ ์ง๋ณด์๋ฅผ ๊ฐ์ํํ๋ค.
ํด๋ผ์ด์ธํธ๋ ๋จ์ํ๊ฒ API๋ฅผ ํธ์ถํ๊ณ , ์๋ต์ ์ฒ๋ฆฌํ๊ธฐ๋งํ๋ฉด ๋๊ธฐ๋๋ฌธ์
์ดํ๋ฆฌ์ผ์ด์ ๊ฐ์ ์ผ๊ด์ฑ์ ์ ์งํ๊ณ ๋ก์ง ๋ณ๊ฒฝ์ ์ต์ํ ํ ์ ์๋ค.
์ด๋ ํด๋ผ์ด์ธํธ ์ดํ๋ฆฌ์ผ์ด์ ์ ์ ์ง๋ณด์ ๋น์ฉ์ด ๋ฎ์ถ๊ณ , ์๋ฒ์ธก์์ ๋ก์ง์ ๊ด๋ฆฌํ์ฌ ์ค๋ณต์ฝ๋๋ฅผ ๋ฐฉ์งํ๊ณ ํจ์จ์ ์ธ ์ ์ง๋ณด์๋ฅผ ๊ฐ๋ฅ์ผํ๋ค.
RESTful API๋ ๋ ๋ฆฝ์ ์ผ๋ก ํ ์คํ ๋ฐ ๋๋ฒ๊น ์ ํ ์ ์๋ค๋ ์ฅ์ ์ ๊ฐ๊ณ ์๋ค.
๊ฐ API ์๋ํฌ์ธํธ๋ ๋จ์ ํ ์คํธ ๋ฐ ๋ชจ์ ๋ฐ์ดํฐ๋ฅผ ํ์ฉํ์ฌ ๊ฐ๋ฐ์๊ฐ ์ฝ๊ฒ ํ ์คํธํ ์ ์๋ค.
์ต์ ์ฑ ๊ฐ๋ฐ ๋ํฅ์์ ์ด๋ฌํ RESTful API์ ์ค์์ฑ์ ์ ์ ๋ ๊ฐ์กฐ๋๊ณ ์๊ณ , ์ดํ๋ฆฌ์ผ์ด์
์ ์ ์ ๋ ์ ์ฐํ๊ณ ํ์ฅ๋์ด๊ฐ๋ค.