๊ทธ๋ ์ด ์ค์ํ๊ฑธ ์ ๋ฆฌ๋ฅผ ์ํด๋จ์๋ฆฌ๊ฐ ์๋๋ฐ.......!^^!!!! ๊ธฐ์ตํ์ง ๋ชปํ ์ค์ค๋ก๊ฐ ๋ฐ๋ค.. ํท๊ฐ๋ฆฌ๋ฉด ๋ญ๋ค? #๋ค์ #๊ฐ๋ณด์๊ณ #๋ ๊ณ
- ๐ค REST?
- โ REST(Representational State Transfer)
- โ REST์ ํน์ง
- ๐ค REST API?
- โ REST API์ ๊ตฌ์ฑ ์์
๐ค REST?
โ REST(Representational State Transfer)
- ์์(์ด๋ฏธ์ง, ๋์์, DB....)์ ์ด๋ฆ์ผ๋ก ๊ตฌ๋ถํ์ฌ ํด๋น ์์์ ์ํ(์ ๋ณด)๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ชจ๋ ๊ฒ์ ์๋ฏธ
- JSON์ด๋ XML์ ํตํด ์ฃผ๊ณ ๋ฐ๋ ๊ฒ์ด ์ผ๋ฐ์
- URI๋ฅผ ํตํด ์์์ ๋ช ์ํ๊ณ HTTP method(GET, POST, PUT, PATCH, DELETE)๋ฅผ ํตํด ํด๋น ์์์ ๋ํ CRUD๋ฅผ ์ ์ฉ
- ์น์ ์ฅ์ ์ ์ต๋ํ ํ์ฉํ ์ ์๋ ์ํคํ ์ฒ ์คํ์ผ
- ๋คํธ์ํฌ ์์์ ์๋ฒ-ํด๋ผ์ด์ธํธ๊ฐ ํต์ ํ๋ ๋ฐฉ์์ค ํ๋
๊ฐ๋จํ ๋งํ๋ฉด... ์น์ ์กด์ฌํ๋ ์์์ ๋ํด์ ๊ณ ์ ํ URI๋ฅผ ๋ถ์ฌํ๊ณ ํ์ฉํ๋ ๋ฐฉ๋ฒ๋ก ์ ์๋ฏธ
๐ ๊ทธ๋์ RESTํ ๋ชฉํ๋ฅผ ๊ฐ์ง๊ณ ์์ ์ ํ๊ฒ๋๋ฉด ์ป๋ ์ฅ์
- ํ๋ก ํธ์ ๋ฐฑ์๋์ ์์ญ์ ํจ์จ์ ์ผ๋ก ๋ถ๋ฆฌ → ๊ท๋ชจ ํ์ฅ์ ์ฅ์ ์ด ์๊น
- ํ๋ก ํธ์ ๋ฐฑ์ด ๋ ๋ฆฝ์ ์ผ๋ก ๋ฐฐํฌ๋์ด ๋ฒ์ ๊ด๋ฆฌ์ ์ฉ์ด
- ๋ฐฑ์๋๊ฐ ๋ถ๋ฆฌ๋์ด ์์ด์ ์์์ ์บก์ํ ํ ์ ์์ → ๋ณด์ ๊ฐํ
๐ ๋ฌผ๋ก ๋จ์ ๋ ์๋ค๊ณ ํฉ๋๋ค?!
- ํ์ค์ด ์์
- ๊ตฌํ ๋ธ๋ผ์ฐ์ ๊ฐ ์์ง ์ง์ํ์ง ์๋ ๊ธฐ๋ฅ๋ค์ด ์กด์ฌ (PUT, DELETE ๋ฑ..)
โ REST์ ํน์ง
- ์๋ฒ-ํด๋ผ์ด์ธํธ ๊ตฌ์กฐ
- Stateless (๋ฌด์ํ)
- ํด๋ผ์ด์ธํธ์ context๋ฅผ ์๋ฒ์ ์ ์ฅํ์ง ์์
(์ธ์ , ์ฟ ํค์ ๊ฐ์ context ์ ๋ณด๋ฅผ ์ ๊ฒฝ์ฐ์ง ์์๋ ๋จ → ๊ตฌํ์ด ๋จ์ํด์ง) - ์๋ฒ๋ ๊ฐ๊ฐ์ ์์ฒญ์ ์์ ํ! ๋ณ๊ฐ์ ๊ฒ์ผ๋ก ์ธ์ํ๊ณ ์ฒ๋ฆฌํจ
- ๊ฐ API ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ๋ง์ ๋จ์ ์ฒ๋ฆฌํจ
- ์ด์ ์์ฒญ์ด ๋ค์ ์์ฒญ์ ์ํฅ์ ์ฃผ๋ฉด ์๋จ
- ๋จ, ์ด์ ์์ฒญ์ด DB๋ฅผ ์์ ํ์ฌ, DB์ ์ํด ๋ฐ๋๋ ๊ฒ์ ๊ฐ๋ฅ
- ์๋ฒ์ ์ฒ๋ฆฌ ๋ฐฉ์์ ์ผ๊ด์ฑ์ ๋ถ์ฌ
- ํด๋ผ์ด์ธํธ์ context๋ฅผ ์๋ฒ์ ์ ์ฅํ์ง ์์
- Cacheable (์บ์ ์ฒ๋ฆฌ ๊ฐ๋ฅ)
- ์น ํ์ค HTTP protocol์ ๊ทธ๋๋ก ์ฌ์ฉํ๋ฏ๋ก ์น์์ ์ฌ์ฉํ๋ ๊ธฐ์กด ์ธํ๋ผ๋ฅผ ํ์ฉ ๊ฐ๋ฅ
- ์น์ด ๊ฐ์ง๋ ๊ฐ๋ ฅํ ํน์ง(์บ์ฑ)์ ์ฌ์ฉํ ์ ์์
- ๋๋์ ์์ฒญ์ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ์ํด ์บ์๊ฐ ์๊ตฌ๋จ
- ์บ์ ์ฌ์ฉ์ ํตํด ์๋ต ์๊ฐ์ด ๋นจ๋ผ์ง๊ณ , REST ์๋ฒ์ ํธ๋์ญ์ ์ด ๋ฐ์ํ์ง ์๊ธฐ ๋๋ฌธ์ ์๋ต์๊ฐ, ์ฑ๋ฅ ๋ฑ์ด ํฅ์๋จ
- ์น ํ์ค HTTP protocol์ ๊ทธ๋๋ก ์ฌ์ฉํ๋ฏ๋ก ์น์์ ์ฌ์ฉํ๋ ๊ธฐ์กด ์ธํ๋ผ๋ฅผ ํ์ฉ ๊ฐ๋ฅ
- ๊ณ์ธตํ ๊ตฌ์กฐ
- Uniform Interface (์ธํฐํ์ด์ค ์ผ๊ด์ฑ)
- URI๋ก ์ง์ ํ ์์์ ๋ํ ์กฐ์์ ํต์ผ๋๊ณ ํ์ ์ ์ธ ์ธํฐํ์ด์ค๋ก ์ํ
- HTTP ํ์ค ํ๋กํ ์ฝ์ ๋ฐ๋ฅด๋ ๋ชจ๋ ํ๋ซํผ์์ ์ฌ์ฉ ๊ฐ๋ฅ → ํน์ ์ธ์ด๋ ๊ธฐ์ ์ ์ข ์๋์ง ์์
๐ค REST API?
- REST ๊ธฐ๋ฐ์ผ๋ก ์๋น์ค API๋ฅผ ๊ตฌํํ ๊ฒ
- OpenAPI ๋ฑ์ ์ ๊ณตํ๋ ์ ์ฒด ๋๋ถ๋ถ์ REST API๋ฅผ ์ ๊ณตํจ
๐ก API(Application Programming Interface)
์ปดํจํฐ ํ๋ก๊ทธ๋จ๊ฐ ์ํธ์์ฉ์ ์ด์งํ๋ฉฐ, ์๋ก ์ ๋ณด๋ฅผ ๊ตํ ํ ์ ์๋๋ก ํ๋ ๊ฒ
โ REST API์ ๊ตฌ์ฑ ์์
1. ์์ (Resource) : URI
- ๋ชจ๋ ์์์ ๊ณ ์ ์์ด๋๊ฐ ์์ผ๋ฉฐ, ์์์ ์๋ฒ์ ์กด์ฌํจ
- ์์์ ๊ตฌ๋ณํ๋ ์์ด๋๋ HTTP URI์ (ex : groups/:group_id)
- ํด๋ผ์ด์ธํธ๋ URI๋ฅผ ์ฌ์ฉํด์ ์์์ ์ง์ ํ๊ณ ํด๋น ์์์ ์ํ(์ ๋ณด)์ ๋ํ ์กฐ์์ ์๋ฒ์ ์์ฒญ
2. ํ์(Verb) : HTTP Method
- HTTP protocol์ method๋ฅผ ์ฌ์ฉํจ
- GET, POST, PUT, DELETE์ ๊ฐ์ ๋ฉ์๋๋ฅผ ์ ๊ณต
- GET : ํด๋น ๋ฆฌ์์ค๋ฅผ ์กฐํํ๊ณ , ํด๋น ๋ํ๋จผํธ์ ๋ํ ์์ธํ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ด
- POST : POST๋ฅผ ํตํด ํด๋น uri๋ฅผ ์์ฒญํ๋ฉด ๋ฆฌ์์ค๋ฅผ ์์ฑํจ
- PUT, PATCH : ํด๋น ๋ฆฌ์์ค๋ฅผ ์์ (PUT → ์ ์ฒด ์์ , PATCH → ์ผ๋ถ๋ถ ์์ )
- DELETE : ํด๋น ๋ฆฌ์์ค๋ฅผ ์ญ์
3. ํํ(Representation of Resource)
- ํด๋ผ์ด์ธํธ๊ฐ ์์์ ์ํ(์ ๋ณด)์ ๋ํ ์กฐ์์ ์์ฒญํ๋ฉด ์๋ฒ๋ ์ ์ ํ ์๋ต์ ๋ณด๋
- ์์์ JSON, XML, Text ๋ฑ ๋ค์ํ ํํ์ ํํ์ผ๋ก ๋ํ๋ด์ง ์ ์์ (๋ณดํต์ JSON, XML ์ฌ์ฉ)
→ ์์ฝ : URI๋ก ์ฃผ์ด๋ ๋ชฉ์ ์ด๋ฅผ ๋ง๋ค๊ณ , HTTP Method๋ก ๋์ฌ๋ฅผ ๋ง๋๋ ๊ฐ๋
๐์ฐธ๊ณ (๊ฐ์ฌํฉ๋๋ค)
https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html
[Network] REST๋? REST API๋? RESTful์ด๋? - Heee's Development Blog
Step by step goes a long way.
gmlwjd9405.github.io
REST์ ์ ์์ RESTful API๋ ๋ฌด์์ธ๊ฐ?
RESTful API๋ ๋ฌด์์ธ๊ฐ? ๋ผ๋ ์ง๋ฌธ์ ๋ฐ๋๋ค๋ฉด ๋์ถฉ RESTํ ๊ตฌ์กฐ๋ก ์๋ก ์ฃผ๊ณ ๋ฐ๋๋ค๋ผ๊ณ ๋ญํ๊ทธ๋ ค ์๊ณ ์์ง๋ง ์ ๋๋ก ๋ ์ ์๊ฐ ๋ฌด์์ธ์ง ํ๋ฒ์ ๋๋ตํ๊ธฐ๋ ํ๋ค๋ค. ์ ํํ RESTํ ๊ตฌ์กฐ๋ ๋ฌด์์ด๊ณ
blog.metafor.kr
'๐๊ณต๋ถ > ํฐ ๋ฐ๊ฒฌ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
HTTP STATUS CODE (0) | 2021.10.11 |
---|---|
์ฟ ํค vs ์ธ์ ์ ์ฅ์ vs ๋ก์ปฌ์ ์ฅ์ (0) | 2021.10.09 |
๋ถํ ํ ์คํธ, ์คํธ๋ ์ค ํ ์คํธ (0) | 2021.10.05 |
quick sort (+ til์ ๋ํ ์ฃผ์ ๋ฆฌ...) (0) | 2021.09.14 |
๋ธ๋ผ์ฐ์ ์ ์๋ ์๋ฆฌ (0) | 2021.08.13 |
๋๊ธ