
REST
- Representational State Transfer
- API ์๋ ๋ฐฉ์์ ๋ํ ์กฐ๊ฑด์ ๋ถ๊ณผํ๋ ์ํํธ์จ์ด ์ํคํ ์ฒ์ด๋ค.
- ๋ณต์กํ ๋คํธ์ํฌ์์ ํต์ ์ ๊ด๋ฆฌํ๊ธฐ ์ํด ๋ง๋ค์ด์ก๋ค.
- REST ๊ธฐ๋ฐ ์ํคํ ์ฒ๋ฅผ ์ฌ์ฉํ์ฌ ๋๊ท๋ชจ์ ๊ณ ์ฑ๋ฅ ํต์ ์ ์์ ์ ์ผ๋ก ์ง์ํ ์ ์๋ค.
RESTful API
โ๏ธ๊ฐ๋
- ๋ ์ปดํจํฐ ์์คํ ์ด ์ธํฐ๋ท์ ํตํด ์ ๋ณด๋ฅผ ์์ ํ๊ฒ ๊ตํํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ์ธํฐํ์ด์ค์ด๋ค.
- ์์ ํ๊ณ ์ ๋ขฐํ ์ ์์ผ๋ฉฐ ํจ์จ์ ์ธ ์ํํธ์จ์ด ํต์ ํ์ค์ ๋ฐ๋ฅธ๋ค.
โ๏ธ์๋๋ฐฉ์
- ์ธํฐ๋ท ๋ธ๋ผ์ฐ์ง๊ณผ ๋์ผํจ
1. client๊ฐ server์ ์์ฒญ์ ์ ์กํ๋ค. API ๋ฌธ์์ ๋ฐ๋ผ server๊ฐ ์ดํดํ๋ ๋ฐฉ์์ผ๋ก ์์ฒญ ํ์์ ์ง์
2. server๊ฐ client๋ฅผ ์ธ์ฆํ๊ณ ํด๋น ์์ฒญ์ ์ํํ ์ ์๋ ๊ถํ์ด client์ ์๋์ง ํ์ธํ๋ค.
3. server๊ฐ ์์ฒญ์ ์์ ํ๊ณ ๋ด๋ถ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ค.
4. server๊ฐ client์ ์๋ต์ ๋ฐํํ๋ค. (์๋ต์๋ ์์ฒญ ์ฑ๊ณต ์ฌ๋ถ๋ฅผ ์๋ ค์ฃผ๋ ์ ๋ณด, client๊ฐ ์์ฒญํ ๋ชจ๋ ์ ๋ณด ํฌํจ๋จ)
โ๏ธclient ์์ฒญ ๊ตฌ์ฑ์์
๊ณ ์ ๋ฆฌ์์ค ์๋ณ์
server๋ ๊ณ ์ ํ ๋ฆฌ์์ค ์๋ณ์๋ก ๊ฐ ๋ฆฌ์์ค๋ฅผ ์๋ณํจ. REST ์๋น์ค์ ๊ฒฝ์ฐ ์ผ๋ฐ์ ์ผ๋ก URL์ ์ฌ์ฉํ์ฌ ์๋ณํจ.
URL์ ์์ฒญ ์๋ํฌ์ธํธ๋ผ๊ณ ๋ ํ๋ฉฐ client๊ฐ ์๊ตฌํ๋ ์ฌํญ์ server์ ๋ช ํํ๊ฒ ์ง์ ํจ.
๋ฉ์๋
HTTP ๋ฉ์๋๋ ๋ฆฌ์์ค์ ์ํํด์ผ ํ๋ ์์ ์ server์ ์๋ ค์ค
โฌ๏ธ ์ผ๋ฐ์ ์ธ 4๊ฐ์ง์ HTTP ๋ฉ์๋
GET : client๋ GET์ ์ฌ์ฉํ์ฌ server์ ์ง์ ๋ URL์ ์๋ ๋ฆฌ์์ค์ ์ก์ธ์คํจ. GET ์์ฒญ์ ์บ์ฑํ๊ณ RESTful API ์์ฒญ์ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฃ์ด ์ ์กํ์ฌ ์ ์ก์ ์ ๋ฐ์ดํฐ๋ฅผ ํํฐ๋งํ๋๋ก server์ ์ง์ํ ์ ์๋ค.
POST : client๋ POST๋ฅผ ์ฌ์ฉํ์ฌ server์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ค. ๋ฐ์ดํฐ ํํ์ด ํฌํจ๋จ.
PUT : client๋ PUT์ ์ฌ์ฉํ์ฌ server์ ๊ธฐ์กด ๋ฆฌ์์ค๋ฅผ ์ ๋ฐ์ดํธํ๋ค. POST์ ๋ฌ๋ฆฌ RESTful ์น ์๋น์ค์์ ๋์ผํ PUT ์์ฒญ์ ์ฌ ๋ฌ๋ฒ ์ ์กํด๋ ๊ฒฐ๊ณผ๋ ๋์ผํ๋ค.
DELETE : client๋ DELETE ์์ฒญ์ ์ฌ์ฉํ์ฌ ๋ฆฌ์์ค๋ฅผ ์ ๊ฑฐํ๋ค. DELETE ์์ฒญ์ server์ํ๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ค.
HTTP ํค๋
์์ฒญ ํค๋๋ client - server ๊ฐ์ ๊ตํ๋๋ ๋ฉํ๋ฐ์ดํฐ. ์์ฒญ ๋ฐ ์๋ต์ ํ์์ ๋ํ๋ด๊ณ ์์ฒญ ์ํ ๋ฑ์ ๋ํ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ค.
๋ฐ์ดํฐ : REST API ์์ฒญ์๋ POST, PUT ๋ฐ ๊ธฐํ HTTP ๋ฉ์๋๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์๋ํ๊ธฐ ์ํ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋๋ค.
ํ๋ผ๋ฏธํฐ : ์ํํด์ผ ํ ์์ ์ ๋ํ ์์ธํ ์ ๋ณด๋ฅผ server์ ์ ๊ณตํ๋ค.
- ๊ฒฝ๋ก ํ๋ผ๋ฏธํฐ : URL ์ธ๋ถ์ ๋ณด๋ฅผ ์ง์
- ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ : ๋ฆฌ์์ค์ ๋ํ ์ถ๊ฐ ์ ๋ณด๋ฅผ ์์ฒญ
- ์ฟ ํค ํ๋ผ๋ฏธํฐ : client๋ฅผ ๋น ๋ฅด๊ฒ ์ธ์ฆ
โ๏ธ์ฅ์
1. ํ์ฅ์ฑ
REST API๋ฅผ ๊ตฌํํ๋ ์์คํ ์ ํจ์จ์ ์ผ๋ก ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ ์ ์๋ค.
๋ฌด์ํ๋ server ๊ฐ ๊ณผ๊ฑฐ client ์์ฒญ ์ ๋ณด๋ฅผ ์ ์งํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ server๋ก๋๋ฅผ ์ ๊ฑฐํ๋ค.
์ฑ๋ฅ์ ์ ํ์ํค๋ ํต์ ๋ณ๋ชฉ ํ์์ ์ผ์ผํค์ง ์์ผ๋ฉด์ ํ์ฅ์ฑ์ ์ง์ํ๋ค.
2. ์ ์ฐ์ฑ
RESTful ์น ์๋น์ค๋ ์์ ํ client-server ๋ถ๋ฆฌ๋ฅผ ์ง์ํ๋ค.
๊ฐ ๋ถ๋ถ์ด ๋ ๋ฆฝ์ ์ผ๋ก ๋ฐ์ ํ ์ ์๋๋ก ๋ค์ํ server ๊ตฌ์ฑ ์์๋ฅผ ๋จ์ํํ๊ณ ๋ถ๋ฆฌํ๋ค.
๊ธฐ์ ๋ณ๊ฒฝ์ ํ๋คํด๋ client ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํฅ์ ์ฃผ์ง ์๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ์๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง์ ๋ค์ ์์ฑํ์ง ์๊ณ ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ณ์ธต์ ๋ณ๊ฒฝํ ์ ์๋ค.
3. ๋ ๋ฆฝ์ฑ
REST API๋ ์ฌ์ฉ๋๋ ๊ธฐ์ ๊ณผ ๋ ๋ฆฝ์ ์ด๋ค.
API ์ค๊ณ์ ์ํฅ์ ์ฃผ์ง ์๊ณ ๋ค์ํ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก client ๋ฐ server ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ชจ๋ ์์ฑํ ์ ์๋ค.
๋ํ ํต์ ์ ์ํฅ์ ์ฃผ์ง ์๊ณ ์์ชฝ์ ๊ธฐ๋ณธ ๊ธฐ์ ์ ๋ณ๊ฒฝํ ์ ์๋ค.
โณ๏ธ ์ฐธ์กฐ
'Frontend > Web' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Web] HTTP ์ํ ์ฝ๋ (0) | 2024.12.01 |
|---|---|
| [Web] HTTP ๋ฉ์๋ (0) | 2024.12.01 |
| [Web] RESTful API ์ค๊ณ ์์น (0) | 2024.10.10 |
| [Web] ์ธ์ (Session)๊ณผ ์ฟ ํค(Cookie) (0) | 2024.07.30 |
| [Web] ์๋ฐฉํฅ ํต์ : Polling, Websocket (0) | 2024.07.23 |