๐งช Computer Science/Computer Network
REST
REST์ ์ ์
'REpresentational State Transfer(๋ํ์ ์ธ ์ํ ์ ๋ฌ)'์ ์ฝ์
World Wide Web(WWW)๊ณผ ๊ฐ์ ๋ถ์ฐ ํ์ดํผ๋ฏธ๋์ด ์์คํ ์ ์ํ ์ํํธ์จ์ด ๊ฐ๋ฐ ์ํคํ ์ฒ์ ํ ํ์
- REST๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์น์ ๊ธฐ์กด ๊ธฐ์ ๊ณผ HTTP ํ๋กํ ์ฝ์ ๊ทธ๋๋ก ํ์ฉํ๊ธฐ ๋๋ฌธ์ ์น์ ์ฅ์ ์ ์ต๋ํ ํ์ฉํ ์ ์๋ ์ํคํ ์ฒ ์คํ์ผ์ด๋ค.
- REST๋ ๋คํธ์ํฌ ์์์ Client์ Server ์ฌ์ด์ ํต์ ๋ฐฉ์ ์ค ํ๋์ด๋ค.
REST์ ๊ตฌ์ฒด์ ์ธ ๊ฐ๋
HTTP URI(Uniform Resource Identifier)๋ฅผ ํตํด ์์(Resource)์ ๋ช ์ํ๊ณ , HTTP Method(GET, POST, PUT, DELETE)๋ฅผ ํตํด ํด๋น ์์์ ๋ํ CRUD ์ฐ์ฐ์ ์ ์ฉํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
์ฆ, REST๋ ์์ ๊ธฐ๋ฐ์ ๊ตฌ์กฐ(ROA, Resource Oriented Architecture) ์ค๊ณ์ ์ค์ฌ์ Resource๊ฐ ์๊ณ HTTP Method๋ฅผ ํตํด Resource๋ฅผ ์ฒ๋ฆฌํ๋๋ก ์ค๊ณ๋ ์ํคํ ์ฒ๋ฅผ ์๋ฏธํ๋ค.
์น ์ฌ์ดํธ์ ์ด๋ฏธ์ง, ํ ์คํธ, DB ๋ด์ฉ ๋ฑ์ ๋ชจ๋ ์์์ ๊ณ ์ ํ ID์ธ HTTP URI๋ฅผ ๋ถ์ฌํ๋ค.
REST์ ์ฅ์ ๊ณผ ๋จ์
์ฅ์
- ์ฌ๋ฌ๊ฐ์ง ์๋น์ค ๋์์ธ์์ ์๊ธธ ์ ์๋ ๋ฌธ์ ๋ฅผ ์ต์ํํ๋ค.
- Hypermedia API์ ๊ธฐ๋ณธ์ ์ถฉ์คํ ์งํค๋ฉด์ ๋ฒ์ฉ์ฑ์ ๋ณด์ฅํ๋ค.
- HTTP ํ๋กํ ์ฝ์ ํ์ค์ ์ต๋ํ ํ์ฉํ์ฌ ์ฌ๋ฌ ์ถ๊ฐ์ ์ธ ์ฅ์ ์ ํจ๊ป ๊ฐ์ ธ๊ฐ ์ ์๊ฒ ํด์ค๋ค.
๋จ์
- ๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด ํ ์คํธ๋ฅผ ํด์ผ ํ ์ผ์ด ๋ง์ ์๋น์ค๋ผ๋ฉด ์ฝ๊ฒ ๊ณ ์น ์ ์๋ URL๋ณด๋ค Header ๊ฐ์ด ๋ ์ด๋ ต๋ค.
- ๊ตฌํ ๋ธ๋ผ์ฐ์ ๊ฐ ์์ง ์ ๋๋ก ์ง์ํด์ฃผ์ง ๋ชปํ๋ ๋ถ๋ถ์ด ์กด์ฌํ๋ค.
- PUT, DELETE๋ฅผ ์ฌ์ฉํ์ง ๋ชปํ๋ ์
- pushState๋ฅผ ์ง์ํ์ง ์๋ ์
REST๊ฐ ํ์ํ ์ด์
์ ํ๋ฆฌ์ผ์ด์ ๋ถ๋ฆฌ ๋ฐ ํตํฉ
๋ค์ํ ํด๋ผ์ด์ธํธ์ ๋ฑ์ฅ
์ฆ, ์ต๊ทผ์ ์๋ฒ ํ๋ก๊ทธ๋จ์ ๋ค์ํ ๋ธ๋ผ์ฐ์ ์ ์๋๋ก์ด๋ํฐ, ์์ดํฐ๊ณผ ๊ฐ์ ๋ชจ๋ฐ์ผ ๋๋ฐ์ด์ค์์๋ ํต์ ์ ํ ์ ์์ด์ผ ํ๋ค.
REST ๊ตฌ์ฑ ์์
์์(Resource): URI๋ก ์์์ ์ ๊ทผ
- ๋ชจ๋ ์์์ ๊ณ ์ ํ ID๊ฐ ์กด์ฌํ๊ณ , ์ด ์์์ Server์ ์กด์ฌํ๋ค.
- ์์์ ๊ตฌ๋ณํ๋ ID๋ 'groups/:group_id'์ ๊ฐ์ HTTP URI๋ค.
- Client๋ URI๋ฅผ ์ด์ฉํด์ ์์์ ์ง์ ํ๊ณ ํด๋น ์์์ ์ํ(์ ๋ณด)์ ๋ํ ์กฐ์์ Server์ ์์ฒญํ๋ค.
ํ์(Verb): HTTP Method
- HTTP ํ๋กํ ์ฝ์ Method๋ฅผ ์ง์ํ๋ค.
- HTTP ํ๋กํ ์ฝ์ GET, POST, PUT, DELETE, HEAD์ ๊ฐ์ ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ค.
ํํ(Representation of Resource)
- Client๊ฐ ์์์ ์ํ(์ ๋ณด)์ ๋ํ ์กฐ์์ ์์ฒญํ๋ฉด Server๋ ์ด์ ์ ์ ํ ์๋ต(Representation)์ ๋ณด๋ธ๋ค.
- REST์์ ํ๋์ ์์์ JSON, XML, TEXT, RSS ๋ฑ ์ฌ๋ฌ ํํ์ Representations์ผ๋ก ๋ํ๋ ์ ์๋ค.
- JSON ํน์ XML์ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด๋ค.
REST ํน์ง
- Client-Server(ํด๋ผ์ด์ธํธ-์๋ฒ ๊ตฌ์กฐ)
- Stateless(๋ฌด์ํ)
- Cacheable(์บ์ ์ฒ๋ฆฌ ๊ฐ๋ฅ)
- Layered System(๊ณ์ธตํ)
- Code-On-Demand(optional)
- Uniform Interface(์ธํฐํ์ด์ค ์ผ๊ด์ฑ)
REST API
REST API์ ์ ์
REST ๊ธฐ๋ฐ์ผ๋ก ์๋น์ค API๋ฅผ ๊ตฌํํ๋ ๊ฒ
์ต๊ทผ OpenAPI, ๋ง์ดํฌ๋ก ์๋น์ค ๋ฑ์ ์ ๊ณตํ๋ ์ ์ฒด ๋๋ถ๋ถ์ REST API๋ฅผ ์ ๊ณตํ๋ค.
REST API์ ํน์ง
์ฌ๋ด ์์คํ ๋ค๋ REST ๊ธฐ๋ฐ์ผ๋ก ์์คํ ์ ๋ถ์ฐํด ํ์ฅ์ฑ๊ณผ ์ฌ์ฌ์ฉ์ฑ์ ๋์ฌ ์ ์ง๋ณด์ ๋ฐ ์ด์ฉ์ ํธ๋ฆฌํ๊ฒ ํ ์ ์๋ค.
REST๋ HTTP ํ์ค์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌํํ๋ฏ๋ก, HTTP๋ฅผ ์ง์ํ๋ ํ๋ก๊ทธ๋จ ์ธ์ด๋ก ํด๋ผ์ด์ธํธ, ์๋ฒ๋ฅผ ๊ตฌํํ ์ ์๋ค.
์ฆ, REST API๋ฅผ ์ ์ํ๋ฉด ๋ธํ์ด ํด๋ผ์ด์ธํธ ๋ฟ ์๋๋ผ ์๋ฐ, C#, ์น ๋ฑ์ ์ด์ฉํด ํด๋ผ์ด์ธํธ๋ฅผ ์ ์ํ ์ ์๋ค.
REST API ์ค๊ณ ๊ธฐ๋ณธ ๊ท์น
URI๋ ์ ๋ณด์ ์์์ ํํํด์ผ ํ๋ค.
์์์ ๋ํ ํ์๋ HTTP Methond(GET, POST, PUT, DELETE)๋ก ํํํ๋ค.
ํ์ดํ(-)์ URI ๊ฐ๋ ์ฑ์ ๋์ด๋๋ฐ ์ฌ์ฉ
๋ฐ์ค(_ )์ URI์ ์ฌ์ฉํ์ง ์๋๋ค.
URI ๊ฒฝ๋ก์๋ ์๋ฌธ์๊ฐ ์ ํฉํ๋ค.
ํ์ผํ์ฅ์๋ URI์ ํฌํจํ์ง ์๋๋ค.
๋ฆฌ์์ค ๊ฐ์๋ ์ฐ๊ด ๊ด๊ณ๊ฐ ์๋ ๊ฒฝ์ฐ '/'
:id๋ ํ๋์ ํน์ resource๋ฅผ ๋ํ๋ด๋ ๊ณ ์ ๊ฐ
RESTful
RESTful์ ๊ฐ๋
์ผ๋ฐ์ ์ผ๋ก REST๋ผ๋ ์ํคํ ์ฒ๋ฅผ ๊ตฌํํ๋ ์น ์๋น์ค๋ฅผ ๋ํ๋ด๊ธฐ ์ํด ์ฌ์ฉ๋๋ ์ฉ์ด์ด๋ค.
- ์ฆ, REST ์๋ฆฌ๋ฅผ ๋ฐ๋ฅด๋ ์์คํ ์ RESTful์ด๋ ์ฉ์ด๋ก ์ง์นญ๋๋ค.
RESTful์ REST๋ฅผ REST๋ต๊ฒ ์ฐ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ผ๋ก ๋๊ตฐ๊ฐ๊ฐ ๊ณต์์ ์ผ๋ก ๋ฐํํ ๊ฒ์ด ์๋๋ค.
RESTful์ ๋ชฉ์
์ดํดํ๊ธฐ ์ฝ๊ณ ์ฌ์ฉํ๊ธฐ ์ฌ์ด REST API๋ฅผ ๋ง๋๋ ๊ฒ
RESTful API๋ฅผ ๊ตฌํํ๋ ๊ทผ๋ณธ์ ์ธ ๋ชฉ์ ์ด ํผํฌ๋จผ์ค ํฅ์์ ์๋ ๊ฒ์ด ์๋๋ผ, ์ผ๊ด์ ์ธ ์ปจ๋ฒค์ ์ ํตํ API์ ์ดํด๋ ๋ฐ ํธํ์ฑ์ ๋์ด๋๊ฒ ์ฃผ ๋๊ธฐ์ด๊ธฐ ๋๋ฌธ์, ํผํฌ๋จผ์ค๊ฐ ์ค์ํ ์ํฉ์์๋ ๊ตณ์ด RESTful API๋ฅผ ๊ตฌํํ ํ์๋ ์๋ค.
RESTful ํ์ง ๋ชปํ ๊ฒฝ์ฐ
- ex1) CRUD ๊ธฐ๋ฅ์ ๋ชจ๋ POST๋ก๋ง ์ฒ๋ฆฌํ๋ API
- ex2) route์ resource, id ์ธ์ ์ ๋ณด๊ฐ ๋ค์ด๊ฐ๋ ๊ฒฝ์ฐ
'๐งช Computer Science > Computer Network' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ปดํจํฐ๋คํธ์ํฌ] DNS (0) | 2021.06.24 |
---|---|
[์ปดํจํฐ๋คํธ์ํฌ] ์ฟ ํค์ ์ธ์ (0) | 2021.06.23 |
[์ปดํจํฐ๋คํธ์ํฌ] GET ๋ฉ์๋์ POST ๋ฉ์๋ (0) | 2021.06.23 |
[์ปดํจํฐ๋คํธ์ํฌ] SSL ํต์ ๊ณผ์ (1) | 2021.06.23 |
[์ปดํจํฐ๋คํธ์ํฌ] HTTP์ HTTPS (0) | 2021.06.23 |