1. REST (Representational State Transfer)
- ์ด๋ค ์์์ CRUD ์ฐ์ฐ์ ์ํํ๊ธฐ ์ํด URI๋ก ์์ฒญ์ ๋ณด๋ด๋ ๊ฒ
- HTTP URI๋ฅผ ํตํด ์์์ ๋ช ์ํ๊ณ , HTTP Method๋ฅผ ํตํด ํด๋น ์์์ ๋ํ CRUD Operation์ ์ ์ฉํ๋ ๊ฒ
- ๊ฐ ์์ฒญ์ด ์ด๋ค ๋์์ด๋ ์ ๋ณด๋ฅผ ์ํ ๊ฒ์ธ์ง๋ฅผ ๊ทธ ์์ฒญ์ ๋ชจ์ต ์์ฒด๋ก ์ถ๋ก ๊ฐ๋ฅ
1-1. ๊ตฌ์ฑ์์
1) ์์(Resource) : HTTP URI
2) ์์์ ๋ํ ํ์(Verb) : HTTP Method (GET, POST, PUT(PATCH), DELETE)
3) ์์์ ๋ํ ํ์์ ๋ด์ฉ(Representations) : HTTP Message Payload (JSON, XML, RSS ๋ฑ)

1-2. REST๊ฐ ์ ํ์ํ๊ฐ?
๊ฐ ์์ฒญ์ ์๋๋ฅผ ํ์ ํ๊ธฐ ์ฝ๊ณ ์ฌ์ฉํ๊ธฐ ์ฌ์ด API๋ฅผ ์ ์ํ๊ธฐ ์ํด์
1๏ธโฃ GET /deleteUserInfo/id?=3
2๏ธโฃ DELETE /users/3
์์ ๋ ์์ฒญ์ ๋ชจ๋ ํน์ user์ ์ ๋ณด๋ฅผ ์ญ์ ํ๋ API ์ด์ง๋ง, ์ฒซ ๋ฒ์งธ API๋ RESTfulํ์ง ๋ชปํ๋ค.
1-3. REST ํน์ง
1) Uniform (์ ๋ํผ ์ธํฐํ์ด์ค)
Uniform Interface๋ URI๋ก ์ง์ ํ ๋ฆฌ์์ค์ ๋ํ ์กฐ์์ ํต์ผ๋๊ณ ํ์ ์ ์ธ ์ธํฐํ์ด์ค๋ก ์ํํ๋ ์ํคํ ์ฒ ์คํ์ผ
2) Stateless (๋ฌด์ํ์ฑ)
REST๋ ๋ฌด์ํ์ฑ ์ฑ๊ฒฉ์ ๊ฐ๋๋ค. ๋ค์ ๋งํด ์์ ์ ์ํ ์ํ์ ๋ณด๋ฅผ ๋ฐ๋ก ์ ์ฅํ๊ณ ๊ด๋ฆฌํ์ง ์๋๋ค. ์ธ์ ์ ๋ณด๋ ์ฟ ํค ์ ๋ณด๋ฅผ ๋ณ๋๋ก ์ ์ฅํ๊ณ ๊ด๋ฆฌํ์ง ์๊ธฐ ๋๋ฌธ์ API ์๋ฒ๋ ๋ค์ด์ค๋ ์์ฒญ๋ง์ ๋จ์ํ ์ฒ๋ฆฌํ๋ฉด ๋๋ค. ๋๋ฌธ์ ์๋น์ค์ ์์ ๋๊ฐ ๋์์ง๊ณ ์๋ฒ์์ ๋ถํ์ํ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ์ง ์์์ผ๋ก์จ ๊ตฌํ์ด ๋จ์ํด์ง๋ค.
3) Cacheable (์บ์ ๊ฐ๋ฅ)
REST์ ๊ฐ์ฅ ํฐ ํน์ง ์ค ํ๋๋ HTTP๋ผ๋ ๊ธฐ์กด ์นํ์ค์ ๊ทธ๋๋ก ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์, ์น์์ ์ฌ์ฉํ๋ ๊ธฐ์กด ์ธํ๋ผ๋ฅผ ๊ทธ๋๋ก ํ์ฉ์ด ๊ฐ๋ฅํ๋ค. ๋ฐ๋ผ์ HTTP๊ฐ ๊ฐ์ง ์บ์ฑ ๊ธฐ๋ฅ์ด ์ ์ฉ ๊ฐ๋ฅํ๋ค. HTTP ํ๋กํ ์ฝ ํ์ค์์ ์ฌ์ฉํ๋ Last-Modified ํ๊ทธ๋ E-Tag๋ฅผ ์ด์ฉํ๋ฉด ์บ์ฑ ๊ตฌํ์ด ๊ฐ๋ฅํ๋ค.
4) Self-descriptiveness (์์ฒด ํํ ๊ตฌ์กฐ)
REST API ๋ฉ์์ง๋ง ๋ณด๊ณ ๋ ์ด๋ฅผ ์ฝ๊ฒ ์ดํดํ ์ ์๋ ์์ฒด ํํ ๊ตฌ์กฐ๋ก ๋์ด ์๋ค.
5) Client-Server ๊ตฌ์กฐ
REST ์๋ฒ๋ API ์ ๊ณต, ํด๋ผ์ด์ธํธ๋ ์ฌ์ฉ์ ์ธ์ฆ์ด๋ ์ปจํ ์คํธ(์ธ์ , ๋ก๊ทธ์ธ ์ ๋ณด)๋ฑ์ ์ง์ ๊ด๋ฆฌํ๋ ๊ตฌ์กฐ๋ก ๊ฐ๊ฐ์ ์ญํ ์ด ํ์คํ ๊ตฌ๋ถ๋๊ธฐ ๋๋ฌธ์ ํด๋ผ์ด์ธํธ์ ์๋ฒ์์ ๊ฐ๋ฐํด์ผ ํ ๋ด์ฉ์ด ๋ช ํํด์ง๊ณ ์๋ก๊ฐ ์์กด์ฑ์ด ์ค์ด๋ค๊ฒ ๋๋ค.
6) ๊ณ์ธตํ ๊ตฌ์กฐ
REST ์๋ฒ๋ ๋ค์ค ๊ณ์ธต์ผ๋ก ๊ตฌ์ฑ๋ ์ ์์ผ๋ฉฐ ๋ณด์, ๋ก๋ ๋ฐธ๋ฐ์ฑ, ์ํธํ ๊ณ์ธต์ ์ถ๊ฐํด ๊ตฌ์กฐ์์ ์ ์ฐ์ฑ์ ๋ ์ ์๊ณ PROXY, ๊ฒ์ดํธ์จ์ด ๊ฐ์ ๋คํธ์ํฌ ๊ธฐ๋ฐ์ ์ค๊ฐ๋งค์ฒด๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ํ๋ค.
2. API (Application Programming Interface)
์ํํธ์จ์ด๊ฐ ๋ค๋ฅธ ์ํํธ์จ์ด๋ก๋ถํฐ ์ง์ ๋ ํ์์ผ๋ก ์์ฒญ, ๋ช ๋ น์ ๋ฐ์ ์ ์๋ ์๋จ
์๋น์ค๋ ํ๋ก๊ทธ๋จ ๊ฐ์ ๋ฏธ๋ฆฌ ์ ํด์ง ๊ธฐ๋ฅ์ ์คํํ ์ ์๋๋ก ํ๋ ๊ท์ฝ
3. REST API
REST ์์น์ ์ ์ฉํ์ฌ ์๋น์ค API๋ฅผ ์ค๊ณํ ๊ฒ
HTTP ์์ฒญ์ ๋ณด๋ผ ๋ ์ด๋ค URI์ ์ด๋ค ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ง (+๊ธฐํ) ๋๋ฆฌ ์ฐ์ด๋ ์ผ์ข ์ ํ์
3-1. REST API์ ํต์ฌ
1) URI๋ ๋ฆฌ์์ค๋ฅผ ํํํด์ผ ํ๋ค.
- ๋ฆฌ์์ค ๋ช ์ ๋์ฌ๊ฐ ์๋ ๋ช ์ฌ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
/students/1
- ๋ฆฌ์์ค๋ Collection๊ณผ Document๋ก ํํํ ์ ์๋ค.
/locations/seoul/schools/3
์ด ๋, Collection์ ๋ณต์๋ฅผ ์ฌ์ฉํ๋ค. ์ฌ๊ธฐ์ locations๋ Collection์, seoul์ Document๋ฅผ ํํํ๋ค.
2) ๊ทธ ๋ฆฌ์์ค์ ๋ํ ํ์๋ HTTP์ Method๋ก ํํํด์ผ ํ๋ค.
- GET์ ๋ฆฌ์์ค๋ฅผ ์กฐํํ๋ค. (ํ์ ๋ชฉ๋ก ์กฐํ)
GET /students
- POST๋ ๋ฆฌ์์ค๋ฅผ ์์ฑํ๋ค. (ํ์ ์์ฑ)
POST /students
- PUT์ ๋ฆฌ์์ค๋ฅผ ์ ๋ฐ์ดํธํ๋ค. (1๋ฒ ํ์ ์ ๋ณด ์ ๋ฐ์ดํธ)
PUT /students/1
- DELETE๋ ๋ฆฌ์์ค๋ฅผ ์ญ์ ํ๋ค. (1๋ฒ ํ์ ์ญ์ )
DELETE /students/1
3-2. ์๋ชป๋ REST ์ฌ์ฉ
GET/POST์ ๋ถ์ ํฉํ ์ฌ์ฉ : ๊ธฐ์กด์ ์กฐํ/์์ฑ ๊ธฐ๋ฅ์ด ์๋ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
์์ฒด ํํ์ ์ด์ง ์์ : REST์ ํน์ง ์ค ํ๋์ธ ์์ฒดํํ์ฑ์์ ๋จ์ด์ง๋ ๊ฒฝ์ฐ๋ก, ์ดํดํ๊ธฐ ์ด๋ ต๋ค.
HTTP ์๋ต์ฝ๋ ๋ฏธ์ฌ์ฉ : ์์ฒญ์ ๋ํ ์๋ต์ ์ํ์ฝ๋๋ฅผ ๋ช ํํ๊ฒ ์ ์ํ์ง ์์ ๊ฒฝ์ฐ
์ฐธ๊ณ
https://velog.io/@ellyheetov/REST-API
https://www.youtube.com/watch?v=iOueE9AXDQQ
'elice > study' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BE] Passport.js๋ฅผ ํ์ฉํ ๊ฐ๋จํ ํ์์ธ์ฆ ๊ตฌํ (0) | 2022.03.07 |
---|---|
[CS] AJAX (0) | 2022.02.28 |
[BE] ๋ผ์ฐํ (Routing) (0) | 2022.02.14 |
[CS] ์๋งจํฑ ๋งํฌ์ (0) | 2022.02.14 |
[CS] script, script async, script defer (0) | 2022.02.14 |