- REST API
- REST API๋ฅผ ๋ณดํธํ๋ ๋ฐฉ๋ฒ
REST API๋? ์ฝ๊ฒ ๋งํด REST๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด์ง API ์ด๋ค.
๋จผ์ REST์ ๋ํด ์์๋ณด์
REST ๋?
Representationnal State Tranfer์ ์ฝ์ด๋ก '์์์ ์ด๋ฆ์ผ๋ก ๊ตฌ๋ถํ์ฌ ํด๋น ์์์ ์ํ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ชจ๋ ๊ฒ' ์ ์๋ฏธํ๋ค.
1. HTTP URI(Uniform Resource Identifier)๋ฅผ ํตํด ์์(Resource)์ ๋ช ์
2. HTTP Method(POST, GET, PUT, DELETE, PATCH๋ฑ)๋ฅผ ํตํด ํด๋น ์์(URI)์ ๋ํ CRUD Operation์ ์ ์ฉํ๋ ๊ฒ ์ ์๋ฏธํ๋ค.
์ฌ๊ธฐ์์, CRUD Operation์ด๋?
CRUD๋ ๋๋ถ๋ถ ์ปดํจํฐ ์ํํธ์จ์ด๊ฐ ๊ฐ์ง๋ ๊ธฐ๋ณธ์ ์ธ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๊ธฐ๋ฅ์ธ Create, Read, Update, Delete๋ฅผ ๋ฌถ์ด์ ์ผ์ปซ๋ ๋ง์ด๋ค.
REST์ ํน์ง
- Server-Client (์๋ฒ-ํด๋ผ์ด์ธํธ ๊ตฌ์กฐ)
- Stateless(๋ฌด์ํ)
- Cacheable(์บ์ ์ฒ๋ฆฌ ๊ฐ๋ฅ)
- Layered System(๊ณ์ธตํ)
- Uniform Interface(์ธํฐํ์ด์ค ์ผ๊ด์ฑ)
REST์ ์ฅ์
1. HTTP ํ๋กํ ์ฝ์ ์ธํ๋ผ๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ๋ฏ๋ก REST API ์ฌ์ฉ์ ์ํ ๋ณ๋์ ์ธํ๋ผ๋ฅผ ๊ตฌ์ถํ ํ์๊ฐ ์๋ค.
2. HTTP ํ๋กํ ์ฝ์ ํ์ค์ ์ต๋ํ ํ์ฉํ์ฌ ์ฌ๋ฌ ์ถ๊ฐ์ ์ธ ์ฅ์ ์ ํจ๊ป ๊ฐ์ ธ๊ฐ ์ ์๊ฒ ํด์ค๋ค.
3. HTTP ํ์ค ํ๋กํ ์ฝ์ ๋ฐ๋ฅด๋ ๋ชจ๋ ํ๋ซํผ์์ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
4. Hypermedia API์ ๊ธฐ๋ณธ์ ์ถฉ์คํ ์งํค๋ฉฐ ๋ฒ์ฉ์ฑ์ ๋ณด์ฅํ๋ค.
5. ์๋ฒ์ ํด๋ผ์ด์ธํธ์ ์ญํ ์ ๋ช ํํ๊ฒ ๋ถ๋ฆฌํ๋ค.
6. ์ฌ๋ฌ๊ฐ์ง ์๋น์ค ๋์์ธ์์ ์๊ธธ ์ ์๋ ๋ฌธ์ ๋ฅผ ์ต์ํํ๋ค.
7. REST API ๋ฉ์์ง๊ฐ ์๋ํ๋ ๋ฐ๋ฅผ ๋ช ํํ๊ฒ ๋ํ๋ด๋ฏ๋ก ์๋ํ๋ ๋ฐ๋ฅผ ์ฝ๊ฒ ํ์ ํ ์ ์๋ค.
REST์ ๋จ์
1. HTTP Method ํํ๊ฐ ์ ํ์ ์ด๋ค.
2. ๊ตฌํ ๋ธ๋ผ์ฐ์ ์์ ํธํ์ด ๋์ง ์์ ์ง์ํ์ง ๋ชปํ๋ ๋์์ด ๋ง๋ค.
3. ํ์ค์ด ์กด์ฌํ์ง ์์ ์ ์๊ฐ ํ์ํ๋ค.
4. ๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด ํ ์คํธํ ์ผ์ด ๋ง์ ์๋น์ค๋ผ๋ฉด ์ฝ๊ฒ ๊ณ ์น ์ ์๋ URL๋ณด๋ค Header ์ ๋ณด์ ๊ฐ์ ์ฒ๋ฆฌํด์ผํ๊ธฐ ๋๋ฌธ์ ์ ๋ฌธ์ฑ์ด ์๊ตฌ๋๋ค.
REST API
: RestAPI ๋ Rest์ ์๋ฆฌ๋ฅผ ๋ฐ๋ฅด๋ API์ด๋ค.
์ด RestAPI๋ฅผ ์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ์ง์ผ์ผํ๋ ๊ท์น์ด ์กด์ฌํ๋ค.
REST API ์ค๊ณ
1. URI๋ ๋์ฌ๋ณด๋ค๋ ๋ช ์ฌ, ๋๋ฌธ์๋ณด๋ค๋ ์๋ฌธ์๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
2. ๋ง์ง๋ง์ ์ฌ๋์(/)๋ฅผ ํฌํจํ์ง ์๋๋ค.
3. ์ธ๋๋ฐ ๋์ ํ์ดํ์ ์ฌ์ฉํ๋ค.
4. ํ์ผํ์ฅ์๋ URI์ ํฌํจํ์ง ์๋๋ค.
5. ํ์๋ฅผ ํฌํจํ์ง ์๋๋ค.
๊ทธ๋ ๋ค๋ฉด, ์ด์ RESTful ์ ๋ํด ์ ๋๋ก ๊ณต๋ถํด๋ณด์
RESTful
RESTful์ด๋ Rest์ ์๋ฆฌ๋ฅผ ๋ฐ๋ฅด๋ ์์คํ ์ด๋ค. ํ์ง๋ง REST๋ฅผ ์ฌ์ฉํ๋ค๊ณ ํด์, ๋ค RESTful์ ์๋๋ค.
์์์ ๋งํ REST API์ ์ค๊ณ ๊ท์น์ ์ฌ๋ฐ๋ฅด๊ฒ ์งํจ ์์คํ ์ RESTful ์ด๋ผ๊ณ ํ ์ ์๋ค.
'๐ฉ๐ปโ๐ป Developer > ์ ์ ๊ฐ๋ฐ์ ์ง์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
SQL๊ณผ NoSQL์ ์ฐจ์ด๋? (0) | 2024.03.27 |
---|---|
JPA ์ Mybatis๋ ๋ฌด์์ธ๊ฐ? / JPA์ Mybatis์ ์ฐจ์ด (1) | 2024.03.26 |
์ํคํ ์ฒ, ํ๋ ์์ํฌ๋ ๋ฌด์์ธ๊ฐ? (0) | 2024.03.13 |
[๊ธฐ๋ณธ ์ง์] Node.js๋? (1) | 2024.03.08 |
๊ฐ๋ฐ์์๊ฒ ํด๋ฆฐ์ฝ๋๊ฐ ์ค์ํ ์ด์ (0) | 2024.02.08 |
๋๊ธ