REST๋
REST(Representational State Transfer)๋ API ์๋ ๋ฐฉ์์ ๋ํ ์กฐ๊ฑด์ ๋ถ๊ณผํ๋ ์ํํธ์จ์ด ์ํคํ ์ณ์ด๋ค. REST๋ ์ธํฐ๋ท๊ณผ ๊ฐ์ ๋ณต์กํ ๋คํธ์ํฌ์์ ํต์ ์ ๊ด๋ฆฌํ๊ธฐ ์ํ ์ง์นจ์ผ๋ก ๋ง๋ค์ด์ก๋ค.
RESTful API๋
RESTful API๋ REST ์ํคํ ์ฒ๋ฅผ ๋ฐ๋ฅด๋ API๋ค. ์ด๋ ์์คํ ์ด RESTful ๋ฐฉ์์ผ๋ก HTTP๋ฅผ ํตํด ํต์ ํ ์ ์๋๋ก ํ๋ ์ธํฐํ์ด์ค์ด๋ค. RESTful API๋ ๋จ์ํ๊ณ ํ์ฅ ๊ฐ๋ฅํ๋ฉฐ ์ํ ๋น์ ์ฅ๋๋๋ก ์ค๊ณ๋์๋ค.
RESTful API๋ ์ผ๋ฐ์ ์ผ๋ก URI๋ก ์๋ณ๋๋ ๋ฆฌ์์ค์ ๋ํ ์์ ์ ํ์ค HTTP ๋ฉ์๋(GET, POST, PUT, DELETE)๋ฅผ ์ฌ์ฉํ๋ค. ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ๊ตํ๋๋ ๋ฐ์ดํฐ๋ JSON ๋๋ XML ํ์์ธ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
REST ์ ์ฝ ์กฐ๊ฑด
1. ๋ฌด์ํ(Stateless)
๊ฐ ์์ฒญ ๊ฐ ํด๋ผ์ด์ธํธ์ ์์ฒญ ์ํ๊ฐ ์๋ฒ์ ์ ์ฅ๋์ด์๋ ์๋๋ค. ์ฆ, ๊ฐ ์์ฒญ์๋ ๊ทธ ์์ฒญ์ ์ดํดํ๋ ๋ฐ ํ์ํ ๋ชจ๋ ์ ๋ณด๊ฐ ํฌํจ๋์ด ์์ด์ผ ํ๋ค.
2. ์บ์ ์ฒ๋ฆฌ ๊ฐ๋ฅ(Cacheable)
ํด๋ผ์ด์ธํธ๋ ์๋ต์ ์บ์ฑํ ์ ์์ด์ผ ํ๋ค.
3. ํด๋ผ์ด์ธํธ/์๋ฒ ๊ตฌ์กฐ
์ํคํ ์ฒ๋ฅผ ๋จ์ํ์ํค๊ณ ์์ ๋จ์๋ก ๋ถ๋ฆฌ(decouple)ํจ์ผ๋ก์จ ํด๋ผ์ด์ธํธ-์๋ฒ์ ๊ฐ ํํธ๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ์ ๋ ์ ์๋๋ก ํด์ค๋ค.
4. ๊ณ์ธตํ(Layered System)
๊ณ์ธตํ๋ ์์คํ ์ํคํ ์ฒ์์ ํด๋ผ์ด์ธํธ๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ ์ฌ์ด์ ๋ค๋ฅธ ์น์ธ๋ ์ค๊ฐ์์๊ฒ ์ฐ๊ฒฐํ ์ ์์ผ๋ฉฐ ์ฌ์ ํ ์๋ฒ๋ก๋ถํฐ๋ ์๋ต์ ๋ฐ๋๋ค. ์๋ฒ๋ ์์ฒญ์ ๋ค๋ฅธ ์๋ฒ๋ก ์ ๋ฌํ ์๋ ์๋ค. ํด๋ผ์ด์ธํธ ์์ฒญ์ ์ดํํ๊ธฐ ์ํด ํจ๊ป ์๋ํ๋ ๋ณด์, ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ ๋น์ฆ๋์ค ๋ก์ง๊ณผ ๊ฐ์ ์ฌ๋ฌ ๊ณ์ธต์ผ๋ก ์ฌ๋ฌ ์๋ฒ์์ ์คํ๋๋๋ก RESTful ์น ์๋น์ค๋ฅผ ์ค๊ณํ ์ ์๋ค. ์ด๋ฌํ ๊ณ์ธต์ ํด๋ผ์ด์ธํธ์ ๋ณด์ด์ง ์๋ ์ํ๋ก ์ ์ง๋๋ค.
5. Code on demand (optional)
์์ฒญ ์ ์๋ฒ์์ ํด๋ผ์ด์ธํธ๋ก ์คํ ๊ฐ๋ฅํ ์ฝ๋๋ฅผ ์ ์กํ์ฌ ํด๋ผ์ด์ธํธ ๊ธฐ๋ฅ์ ํ์ฅํ๋ ๊ธฐ๋ฅ์ด๋ค. ์๋ฅผ ๋ค์ด, ์น ์ฌ์ดํธ์์ ๋ฑ๋ก ์์์ ์์ฑํ๋ฉด ๋ธ๋ผ์ฐ์ ๋ ์๋ชป๋ ์ ํ๋ฒํธ์ ๊ฐ์ ์ค์๋ฅผ ์ฆ์ ๊ฐ์กฐ ํ์ํ๋ค. ์๋ฒ์์ ์ ์กํ ์ฝ๋๋ก ์ธํด ์ด ์์ ์ ์ํํ ์ ์๋ค.
6. ์ธํฐํ์ด์ค ์ผ๊ด์ฑ
์ผ๊ด์ ์ธ ์ธํฐํ์ด์ค๋ก ๋ถ๋ฆฌ๋์ด์ผ ํ๋ค. ์ ์ฝ ์กฐ๊ฑด์ ๋ค์๊ณผ ๊ฐ๋ค.
- ๋ฆฌ์์ค ์๋ณ: ๋ฆฌ์์ค๋ URI(Uniform Resource Identifier)๋ก ์๋ณ๋๋ค.
- ํํ์ ํตํ ๋ฆฌ์์ค ์กฐ์: ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ธ ํํ(ex. JSON ๋๋ XML)์ ํตํด ๋ฆฌ์์ค๋ฅผ ์กฐ์ํ ์ ์๋ค.
- ์๊ธฐ ์ค๋ช ์ ๋ฉ์์ง: ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก, ์๋ฒ์์ ํด๋ผ์ด์ธํธ๋ก์ ๊ฐ ๋ฉ์์ง์๋ ๋ฉ์์ง ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ์ค๋ช ํ๋ ๋ฐ ์ถฉ๋ถํ ์ ๋ณด๊ฐ ํฌํจ๋์ด์ผ ํ๋ค.
์ฐธ๊ณ ์๋ฃ
https://aws.amazon.com/ko/what-is/restful-api/
'๐ฉโ๐ป CS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
XSS, CSRF, SQL Injection ๊ณต๊ฒฉ๊ณผ ํด๊ฒฐ๋ฐฉ๋ฒ (0) | 2024.01.25 |
---|---|
[๋คํธ์ํฌ] URI, URL, URN์ ์ฐจ์ด (0) | 2024.01.25 |
[๋คํธ์ํฌ] SOP, CORS (0) | 2024.01.23 |
[๋คํธ์ํฌ-์ธ์ฆ] ์ฟ ํค, ์ธ์ , JWT ํ ํฐ (0) | 2024.01.23 |
[๋คํธ์ํฌ] LAN๊ณผ WAN (0) | 2024.01.11 |
REST๋
REST(Representational State Transfer)๋ API ์๋ ๋ฐฉ์์ ๋ํ ์กฐ๊ฑด์ ๋ถ๊ณผํ๋ ์ํํธ์จ์ด ์ํคํ ์ณ์ด๋ค. REST๋ ์ธํฐ๋ท๊ณผ ๊ฐ์ ๋ณต์กํ ๋คํธ์ํฌ์์ ํต์ ์ ๊ด๋ฆฌํ๊ธฐ ์ํ ์ง์นจ์ผ๋ก ๋ง๋ค์ด์ก๋ค.
RESTful API๋
RESTful API๋ REST ์ํคํ ์ฒ๋ฅผ ๋ฐ๋ฅด๋ API๋ค. ์ด๋ ์์คํ ์ด RESTful ๋ฐฉ์์ผ๋ก HTTP๋ฅผ ํตํด ํต์ ํ ์ ์๋๋ก ํ๋ ์ธํฐํ์ด์ค์ด๋ค. RESTful API๋ ๋จ์ํ๊ณ ํ์ฅ ๊ฐ๋ฅํ๋ฉฐ ์ํ ๋น์ ์ฅ๋๋๋ก ์ค๊ณ๋์๋ค.
RESTful API๋ ์ผ๋ฐ์ ์ผ๋ก URI๋ก ์๋ณ๋๋ ๋ฆฌ์์ค์ ๋ํ ์์ ์ ํ์ค HTTP ๋ฉ์๋(GET, POST, PUT, DELETE)๋ฅผ ์ฌ์ฉํ๋ค. ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ๊ตํ๋๋ ๋ฐ์ดํฐ๋ JSON ๋๋ XML ํ์์ธ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
REST ์ ์ฝ ์กฐ๊ฑด
1. ๋ฌด์ํ(Stateless)
๊ฐ ์์ฒญ ๊ฐ ํด๋ผ์ด์ธํธ์ ์์ฒญ ์ํ๊ฐ ์๋ฒ์ ์ ์ฅ๋์ด์๋ ์๋๋ค. ์ฆ, ๊ฐ ์์ฒญ์๋ ๊ทธ ์์ฒญ์ ์ดํดํ๋ ๋ฐ ํ์ํ ๋ชจ๋ ์ ๋ณด๊ฐ ํฌํจ๋์ด ์์ด์ผ ํ๋ค.
2. ์บ์ ์ฒ๋ฆฌ ๊ฐ๋ฅ(Cacheable)
ํด๋ผ์ด์ธํธ๋ ์๋ต์ ์บ์ฑํ ์ ์์ด์ผ ํ๋ค.
3. ํด๋ผ์ด์ธํธ/์๋ฒ ๊ตฌ์กฐ
์ํคํ ์ฒ๋ฅผ ๋จ์ํ์ํค๊ณ ์์ ๋จ์๋ก ๋ถ๋ฆฌ(decouple)ํจ์ผ๋ก์จ ํด๋ผ์ด์ธํธ-์๋ฒ์ ๊ฐ ํํธ๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ์ ๋ ์ ์๋๋ก ํด์ค๋ค.
4. ๊ณ์ธตํ(Layered System)
๊ณ์ธตํ๋ ์์คํ ์ํคํ ์ฒ์์ ํด๋ผ์ด์ธํธ๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ ์ฌ์ด์ ๋ค๋ฅธ ์น์ธ๋ ์ค๊ฐ์์๊ฒ ์ฐ๊ฒฐํ ์ ์์ผ๋ฉฐ ์ฌ์ ํ ์๋ฒ๋ก๋ถํฐ๋ ์๋ต์ ๋ฐ๋๋ค. ์๋ฒ๋ ์์ฒญ์ ๋ค๋ฅธ ์๋ฒ๋ก ์ ๋ฌํ ์๋ ์๋ค. ํด๋ผ์ด์ธํธ ์์ฒญ์ ์ดํํ๊ธฐ ์ํด ํจ๊ป ์๋ํ๋ ๋ณด์, ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ ๋น์ฆ๋์ค ๋ก์ง๊ณผ ๊ฐ์ ์ฌ๋ฌ ๊ณ์ธต์ผ๋ก ์ฌ๋ฌ ์๋ฒ์์ ์คํ๋๋๋ก RESTful ์น ์๋น์ค๋ฅผ ์ค๊ณํ ์ ์๋ค. ์ด๋ฌํ ๊ณ์ธต์ ํด๋ผ์ด์ธํธ์ ๋ณด์ด์ง ์๋ ์ํ๋ก ์ ์ง๋๋ค.
5. Code on demand (optional)
์์ฒญ ์ ์๋ฒ์์ ํด๋ผ์ด์ธํธ๋ก ์คํ ๊ฐ๋ฅํ ์ฝ๋๋ฅผ ์ ์กํ์ฌ ํด๋ผ์ด์ธํธ ๊ธฐ๋ฅ์ ํ์ฅํ๋ ๊ธฐ๋ฅ์ด๋ค. ์๋ฅผ ๋ค์ด, ์น ์ฌ์ดํธ์์ ๋ฑ๋ก ์์์ ์์ฑํ๋ฉด ๋ธ๋ผ์ฐ์ ๋ ์๋ชป๋ ์ ํ๋ฒํธ์ ๊ฐ์ ์ค์๋ฅผ ์ฆ์ ๊ฐ์กฐ ํ์ํ๋ค. ์๋ฒ์์ ์ ์กํ ์ฝ๋๋ก ์ธํด ์ด ์์ ์ ์ํํ ์ ์๋ค.
6. ์ธํฐํ์ด์ค ์ผ๊ด์ฑ
์ผ๊ด์ ์ธ ์ธํฐํ์ด์ค๋ก ๋ถ๋ฆฌ๋์ด์ผ ํ๋ค. ์ ์ฝ ์กฐ๊ฑด์ ๋ค์๊ณผ ๊ฐ๋ค.
- ๋ฆฌ์์ค ์๋ณ: ๋ฆฌ์์ค๋ URI(Uniform Resource Identifier)๋ก ์๋ณ๋๋ค.
- ํํ์ ํตํ ๋ฆฌ์์ค ์กฐ์: ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ธ ํํ(ex. JSON ๋๋ XML)์ ํตํด ๋ฆฌ์์ค๋ฅผ ์กฐ์ํ ์ ์๋ค.
- ์๊ธฐ ์ค๋ช ์ ๋ฉ์์ง: ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก, ์๋ฒ์์ ํด๋ผ์ด์ธํธ๋ก์ ๊ฐ ๋ฉ์์ง์๋ ๋ฉ์์ง ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ์ค๋ช ํ๋ ๋ฐ ์ถฉ๋ถํ ์ ๋ณด๊ฐ ํฌํจ๋์ด์ผ ํ๋ค.
์ฐธ๊ณ ์๋ฃ
https://aws.amazon.com/ko/what-is/restful-api/
'๐ฉโ๐ป CS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
XSS, CSRF, SQL Injection ๊ณต๊ฒฉ๊ณผ ํด๊ฒฐ๋ฐฉ๋ฒ (0) | 2024.01.25 |
---|---|
[๋คํธ์ํฌ] URI, URL, URN์ ์ฐจ์ด (0) | 2024.01.25 |
[๋คํธ์ํฌ] SOP, CORS (0) | 2024.01.23 |
[๋คํธ์ํฌ-์ธ์ฆ] ์ฟ ํค, ์ธ์ , JWT ํ ํฐ (0) | 2024.01.23 |
[๋คํธ์ํฌ] LAN๊ณผ WAN (0) | 2024.01.11 |