Rest(Reoresentational State Transfer)
๐ก์น์ ๊ธฐ์กด ๊ธฐ์ ๊ณผ HTTP ํ๋กํ ์ฝ์ ๊ทธ๋๋ก ํ์ฉํ๊ธฐ ๋๋ฌธ์ ์น์ ์ฅ์ ์ ์ต๋ํ ํ์ฉํ ์ ์๋ ์ํคํ ์ณ ์คํ์ผ
์ฆ ์์์ ์ด๋ฆ์ผ๋ก ๊ตฌ๋ถํ์ฌ ํด๋น ์์์ ์ํ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ์ํํธ์จ์ด ์ํคํ ์ณ
- HTTP URL์ ํตํด ์์์ ๋ช ์
- HTTP Method๋ฅผ ํตํด ํด๋น ์์์ ๋ํ CRUD Operation์ ์ ์ฉ ํ๋ ๊ฒ
REST ์ ๊ตฌ์ฑ์์
1. ์์(resource)
- ๋ชจ๋ ์์์๋ ๊ณ ์ ํ ID๊ฐ ์๋ฒ์ ์กด์ฌ
- ์์์ ๊ตฌ๋ณํ๋ ID๋ HTTP URI
2. ์์์ ๋ํ ํ์(Verb)
- HTTP Method(GET,POST,PUT,DELETE)๋ฅผ ์ฌ์ฉ
3. ์์์ ๋ํ ํ์์ ๋ด์ฉ(Representations)
- HTTP Message Pay Load
- Client๊ฐ ์์์ ์ํ์ ๋ํ ์กฐ์์ ์์ฒญํ๋ฉด Server๋ ์ด์ ์ ์ ํ ์๋ต์ ๋ณด๋
- ํ์ฌ๋ JSON์ผ๋ก ์ฃผ๊ณ ๋ฐ๋ ๊ฒ์ด ๋๋ถ๋ถ
REST ์ ํน์ง
1. Server-Client( ์๋ฒ ํด๋ผ์ด์ธํธ ๊ตฌ์กฐ)
2. Stateless(๋ฌด์ํ)
: ์๋ฒ์์ ์ด๋ค ์์ ์ ํ๊ธฐ์ํด ์ํ ์ ๋ณด๋ฅผ ๊ธฐ์ตํ ํ์๊ฐ ์๋ค ๋ค์ด์จ ์์ฒญ์ ๋ํด ์ฒ๋ฆฌ๋ง ํด์ฃผ๋ฉด ๋จ
3. Cacheable(์บ์ ์ฒ๋ฆฌ ๊ฐ๋ฅ)
4. Layered System(๊ณ์ธตํ)
: ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ๋ถ๋ฆฌ ๋์ด์์ด ํ๋ก์ ์๋ฒ,์ํธํ ๊ณ์ธต ๋ฑ ์ค๊ฐ ๋งค์ฒด๋ฅผ ์ฌ์ฉํ ์ ์์ด ์์ ๋๊ฐ ๋์
5. Uniform Interface(์ธํฐํ์ด์ค ์ผ๊ด์ฑ)
: ํน์ ์ธ์ด๋ ๊ธฐ์ ์ ์ข ์๋์ง ์์
REST์ ์ฅ๋จ์
REST์ ์ฅ์ | REST ์ ๋จ์ |
HTTP ํ์ค ํ๋กํ ์ฝ์ ๋ฐ๋ฅด๋ ๋ชจ๋ ํ๋ซํผ์์ ์ฌ์ฉ์ด ๊ฐ๋ฅ | HTTP Method๊ฐ ์ ํ์ |
HTTP ํ๋กํ ์ฝ์ ์ธํ๋ผ๋ฅผ ๊ทธ๋๋ก์ฌ์ฉํ์ฌ REST API ์ฌ์ฉ์ ์ํ ๋ณ๋์ ์ธํ๋ผ๋ฅผ ๊ตฌ์ถํ ํ์๊ฐ ์์ | ํ์ค์ด ์์ฒด๊ฐ ์กด์ฌํ์ง ์์ ์ ์๊ฐ ํ์ |
REST API ๋
๐กHTTP์ URI ๊ธฐ๋ฐ์ผ๋ก ์์์ ์ ๊ทผํ ์ ์๋๋ก ์ ๊ณตํ๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ์ธํฐํ์ด์ค
์ฆ, REST์ ์๋ฆฌ๋ฅผ ๋ฐ๋ฅด๋ API
REST API ์ค๊ณ ๊ท์น
1. URI๋ ๋์ฌ๋ณด๋ค๋ ๋ช ์ฌ๋ฅผ ๋๋ฌธ์๋ณด๋ค๋ ์๋ฌธ์๋ฅผ ์ฌ์ฉ
2. ๋ง์ง๋ง์ ์ฌ๋์ฌ๋ฅผ ํฌํจํ์ง ์๋๋ค
3. ์ธ๋๋ฐ ๋์ ํ์ดํ ์ฌ์ฉ
4. ํ์ฅ์๋ URI์ ํฌํจํ์ง ์์
5. ํ์(์ฆ ๋ฉ์ค๋)๋ ํฌํจํ์ง ์๋๋ค
6. ์ฌ๋์ ๊ตฌ๋ถ์๋ ๊ณ์ธต ๊ด๊ณ๋ฅผ ๋ํ๋ด๋๋ฐ ์ฌ์ฉ
RESTful API ๊ฐ๋ฐ ์์น
1. ์์์ ์๋ณํ ์ ์์ด์ผํ๋ค
: URL๋ง์ผ๋ก ์ด๋ค ์์์ ์ ์ดํ๋ ค๊ณ ํ๋์ง ์์ ์์ด์ผํ๋ค
2. ํ์๊ฐ ๋ช ์์ ์ด์ฌ์ผํ๋ค
: REST ์ํคํ ์ณ์ ๋ถํฉํด์ผํ๋ค
ex) GET์ ์ด์ฉํด์ UPDATE์ DELETE๋ฅผ ๊ตฌํํ๋ฉด REST๋ฅผ ๋ฐ๋ฅธ๋ค๊ณ ํ ์ ์์
3. ์๊ธฐ ์์ ์ ์ด์ด์ผํ๋ค
: ๋ฐ์ดํฐ์ ๋ํ ๋ฉํ ์ ๋ณด๋ง ๊ฐ์ง๊ณ ๋ ์ด๋ค ์ข ๋ฅ์ ๋ฐ์ดํฐ์ธ์ง ๋ฐ์ดํฐ๋ฅผ ์ํด์ ์ด๋ค ์ดํ๋ฆฌ์ผ์ด์ ์ ์คํํด์ผํ๋์ง ์ ์ ์์ด์ผ ํ๋ค