์ฃผ๋์ด ๊ฐ๋ฐ์์ ๊ฐ์ธ ๊ณต๋ถ ๊ณผ์ ์ ๊ธฐ๋กํฉ๋๋ค.
RESTful API
RESTful API
?? RESTful URL
?? ๋ง์ด ๋ค์ด๋ ๋ดค๋๋ฐ,, ์ ํํ๊ฒ ๋ชจ๋ฅด๊ฒ ๋ค.๐ฅฒ
ํ์ฌ ์ฌ์ฉ๋๊ณ ์๋ API ์ค๊ณ ๊ท์น ๊ฐ์ด๋ฐ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๊ณ ์๋ ๊ท์น์ด๋ผ๊ณ ํ๋ ์ด๋ฒ ๊ธฐํ์ ์ ๋ฆฌํด๋ณด์!
REST?
REST(REpresentational State Transfer)๋ ์น์ ์กด์ฌํ๋ ๋ชจ๋ ์์(resorce, ex. ์ด๋ฏธ์ง, ๋์์, ๋ฐ์ดํฐ)์ ๊ณ ์ ํ URI๋ฅผ ๋ถ์ฌํ์ฌ ์์์ ๋ํ ์ฃผ์๋ฅผ ์ง์ ํ๋ ๋ฐฉ๋ฒ๋ก , ๋๋ ๊ท์น
>RESTful API
๋REST
ํน์ง์ ์งํค๋ฉด์ API๋ฅผ ์ ๊ณตํ๋ค๋ ์๋ฏธ์ด๋ค.
RESTful API๋?
REST
ํน์ง์ ์งํค๋ฉด์ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ฐ์ ๊ฐ๋ฐ์๋ค ์ฌ์ด์ ๋๋ฆฌ ์ฐ์ด๋ ์ผ์ข ์ ํ์.- REST: ์น์ ์กด์ฌํ๋ ๋ชจ๋ ์์์ ๊ณ ์ ํ
uri
์ ๋ถ์ฌํ๋ ๋ฐฉ๋ฒ- URI: ์์์ ๊ตฌ์กฐ์ ํจ๊ป ๋ํ๋ด๋ ํ์์ ๊ตฌ๋ถ์
- API: ์ด๋ค ์ํํธ์จ์ด๊ฐ ๋ค๋ฅธ ์ํํธ์จ์ด๋ก ๋ถํฐ ์ง์ ๋ ํ์์ผ๋ก ์์ฒญ, ๋ช ๋ น์ ๋ฐ์ ์ ์๋ ์๋จ ex. Web API, windows API ๋ฑ
- REST: ์น์ ์กด์ฌํ๋ ๋ชจ๋ ์์์ ๊ณ ์ ํ
์กฐ๊ธ ๋ ํ์ด๋ณด๋ฉด, โํ๋ก ํธ์๋์์ ๋ฐฑ์๋ API๋ฅผ ํธ์ถํ ๋ url์ ์ด๋ป๊ฒ ๋ง๋ค ๊ฒ์ธ๊ฐ?โ ์ ๋๋ก ์ค๋ช ํ ์ ์๋ค.
REST API
์ ํน์ง
- ๊ฐ ์์ฒญ์ด ์ด๋ค ๋์์ด๋ ์ ๋ณด๋ฅผ ์ํ ๊ฒ์ธ๊ฐ๋ฅผ ๊ทธ ์์ฒญ์ ๋ชจ์ต ์์ฒด๋ก ์ถ๋ก ๊ฐ๋ฅํ๋ค
- ์๋ฒ๋ก REST API ์์ฒญ์ ๋ณด๋ผ ๋๋ HTTP ๊ท์ฝ์ ๋ฐ๋ผ ์ ํธ๋ฅผ ์ ์กํ๋๋ฐ, REST API๋
GET
,POST
,DELETE
,PUT
,PATCH
๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋คPOST
<span style=โcolor:blueโ>C</span>reateGET
<span style=โcolor:blueโ>R</span>eadPUT
<span style=โcolor:blueโ>U</span>pdate ์ ๋ณด๋ฅผ ํต์งธ๋ก ๋ณ๊ฒฝํ ๋PATCH
<span style=โcolor:blueโ>U</span>pdate ์ผ๋ถ ์ ๋ณด๋ง ๋ณ๊ฒฝํ ๋DELETE
<span style=โcolor:blueโ>D</span>elete
REST API
์ ์ฅ์
- ์ํ๋ ํ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ค.
- Open API ๋ฅผ ์ ๊ณตํ๊ธฐ ์ฝ๋ค
- ๊ธฐ์กด ์น ์ธํ๋ผ(HTTP)๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ ์ ์๋ค.
REST API
์ ๋จ์
- ์ฌ์ฉํ ์ ์๋ ๋ฉ์๋๊ฐ 4 ๊ฐ์ง ๋ฐ์ ์๋ค.
- HTTP ํต์ ๋ชจ๋ธ์ ๋ํด์๋ง ์ง์ํ๋ค.
โจ tl;dr
โ๏ธ REST API๋?
- ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ฐ์ ์์ด์ ๊ฐ๋ฐ์๋ค ์ฌ์ด์ ๋๋ฆฌ ์ฐ์ด๋ ์ผ์ข ์ ํ์
- ๊ฐ ์์ฒญ์ด ์ด๋ค ๋์์ด๋ ์ ๋ณด๋ฅผ ์ํ ๊ฒ์ธ๊ฐ๋ฅผ ๊ทธ ์์ฒญ์ ๋ชจ์ต ์์ฒด๋ก ์ถ๋ก ๊ฐ๋ฅํ๋ค
โ๏ธ RESTful ํ๊ฒ API๋ฅผ ๋์์ธ ํ๋ค๋ ๊ฒ์?
๋ฆฌ์์ค
์ํ์
๋ฅผ ๋ช ์์ ์ด๊ณ ์ง๊ด์ ์ผ๋ก ๋ถ๋ฆฌํ๋ค.๋ฆฌ์์ค
๋URI
๋ก ํํ๋๋๋ฐ ๋ฆฌ์์ค๊ฐ ๊ฐ๋ฆฌํค๋ ๊ฒ์ ๋ช ์ฌ๋ก ํํ๋์ด์ผ ํ๋ค.ํ์
๋HTTP Method
๋ก ํํํ๊ณ , GET(์กฐํ), POST(์์ฑ), PUT(๊ธฐ์กด entity ์ ์ฒด ์์ ), PATCH(๊ธฐ์กด entity ์ผ๋ถ ์์ ), DELETE(์ญ์ )์ ๋ถ๋ช ํ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉํ๋ค.
Message
๋Header
์Body
๋ฅผ ๋ช ํํ๊ฒ ๋ถ๋ฆฌํด์ ์ฌ์ฉํ๋ค.Entity
์ ๋ํ ๋ด์ฉ์body
์ ๋ด๋๋ค.- ์ ํ๋ฆฌ์ผ์ด์
์๋ฒ๊ฐ ํ๋ํ ํ๋จ์ ๊ทผ๊ฑฐ๊ฐ ๋๋ ์ปจํธ๋กค ์ ๋ณด์ธ
API ๋ฒ์ ์ ๋ณด
, ์๋ต๋ฐ๊ณ ์ ํ๋MIME ํ์
๋ฑ์header
์ ๋ด๋๋ค. - header์ body๋ http header ์ http body ๋ก ๋๋ ์๋ ์๊ณ , http body ์ ๋ค์ด๊ฐ๋ json ๊ตฌ์กฐ๋ก ๋ถ๋ฆฌํ ์๋ ์๋ค.
- ์๋ฒ์ ํด๋ผ์ด์ธํธ๊ฐ ๊ฐ์ ๋ฐฉ์์ ์ฌ์ฉํด์ ์์ฒญํ๋๋ก ํ๋ค.
- ๋ธ๋ผ์ฐ์ ๋ form-data ํ์์ submit ์ผ๋ก ๋ณด๋ด๊ณ ์๋ฒ์์๋ json ํํ๋ก ๋ณด๋ด๋ ์์ ๋ถ๋ฆฌ๋ณด๋ค๋ json ์ผ๋ก ๋ณด๋ด๋ , ๋ ๋ค form-data ํ์์ผ๋ก ๋ณด๋ด๋ ํ๋๋ก ํต์ผํ๋ค.