๐[REST API] REST API๋?
REST API๋?
REST API๋ ๋จ์ด ๊ทธ๋๋ก REST
๊ท์น์ ๋ฐ๋ฅด๋ API๋ฅผ ๋ปํ๋ค.
์ฆ, REST API๋ฅผ ์๊ธฐ ์ํด์๋ REST
๊ฐ ๋ฌด์์ธ์ง๋ถํฐ ์์์ผํ๋ค.
REST?
REST๋ ์๋์ ๊ฐ์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๊ท์น์ ๋ปํ๋ค.
- HTTP URI(Uniform Resource Identifier)๋ฅผ ํตํด ์์(Resource)์ ๋ช ์ํ๊ณ ,
- HTTP Method(POST, GET, PUT, DELETE ๋ฑ)๋ฅผ ํตํด
- ํด๋น ์์(URI)์ ๋ํ CRUD๋ฅผ ์ ์ฉํ๋ ๊ฒ
REST์ ๊ตฌ์ฑ์์
REST๋ ๋ค์ 3๊ฐ์ง์ ์์๋ก ๊ตฌ์ฑ๋์ด์๋ค.
- ์์(Resource): HTTP URI
- ์์์ ๋ํ ํ์(Verb): HTTP Method
- ์์์ ๋ํ ํ์์ ๋ด์ฉ(Representations): HTTP Message Pay Load
REST์ ํน์ง
- Server-Client(์๋ฒ-ํด๋ผ์ด์ธํธ ๊ตฌ์กฐ)
- Stateless(๋ฌด์ํ)
- Cacheable(์บ์ ์ฒ๋ฆฌ ๊ฐ๋ฅ)
- Layered System(๊ณ์ธตํ)
- Uniform Interface(์ธํฐํ์ด์ค ์ผ๊ด์ฑ)
REST์ ์ฅ์
HTTP ํ๋กํ ์ฝ์ ์ธํ๋ผ๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ๋ฏ๋ก REST API ์ฌ์ฉ์ ์ํ ๋ณ๋์ ์ธํ๋ผ๋ฅผ ๊ตฌ์ถํ ํ์๊ฐ ์๋ค.
HTTP ํ๋กํ ์ฝ์ ํ์ค์ ์ต๋ํ ํ์ฉํ์ฌ ์ฌ๋ฌ ์ถ๊ฐ์ ์ธ ์ฅ์ ์ ํจ๊ป ๊ฐ์ ธ๊ฐ ์ ์๊ฒ ํด ์ค๋ค.
HTTP ํ์ค ํ๋กํ ์ฝ์ ๋ฐ๋ฅด๋ ๋ชจ๋ ํ๋ซํผ์์ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
Hypermedia API์ ๊ธฐ๋ณธ์ ์ถฉ์คํ ์งํค๋ฉด์ ๋ฒ์ฉ์ฑ์ ๋ณด์ฅํ๋ค.
REST API ๋ฉ์์ง๊ฐ ์๋ํ๋ ๋ฐ๋ฅผ ๋ช
ํํ๊ฒ ๋ํ๋ด๋ฏ๋ก ์๋ํ๋ ๋ฐ๋ฅผ ์ฝ๊ฒ ํ์
ํ ์ ์๋ค.
์ฌ๋ฌ ๊ฐ์ง ์๋น์ค ๋์์ธ์์ ์๊ธธ ์ ์๋ ๋ฌธ์ ๋ฅผ ์ต์ํํ๋ค.
์๋ฒ์ ํด๋ผ์ด์ธํธ์ ์ญํ ์ ๋ช
ํํ๊ฒ ๋ถ๋ฆฌํ๋ค.
REST์ ๋จ์
ํ์ค์ด ์์ฒด๊ฐ ์กด์ฌํ์ง ์์ ์ ์๊ฐ ํ์ํ๋ค.
HTTP Method ํํ๊ฐ ์ ํ์ ์ด๋ค.
๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด ํ
์คํธํ ์ผ์ด ๋ง์ ์๋น์ค๋ผ๋ฉด ์ฝ๊ฒ ๊ณ ์น ์ ์๋ URL๋ณด๋ค Header ์ ๋ณด์ ๊ฐ์ ์ฒ๋ฆฌํด์ผ ํ๋ฏ๋ก ์ ๋ฌธ์ฑ์ด ์๊ตฌ๋๋ค.
๊ตฌํ ๋ธ๋ผ์ฐ์ ์์ ํธํ์ด ๋์ง ์์ ์ง์ํด์ฃผ์ง ๋ชปํ๋ ๋์์ด ๋ง๋ค.(์ต์คํด๋ก์ด)
REST API ๊ท์น
- URI๋ ๋์ฌ๋ณด๋ค๋ ๋ช ์ฌ๋ฅผ, ๋๋ฌธ์๋ณด๋ค๋ ์๋ฌธ์๋ฅผ ์ฌ์ฉํ๋ค.
- ๋ง์ง๋ง์ ์ฌ๋์(/)๋ฅผ ํฌํจํ์ง ์๋๋ค.
- ์ธ๋๋ฐ(_) ๋์ ํ์ดํ(-)์ ์ฌ์ฉํ๋ค.
- ํ์ผํ์ฅ์๋ URI์ ํฌํจํ์ง ์๋๋ค.
- ํ์(delete, do .. ๋ฑ)๋ฅผ ํฌํจํ์ง ์๋๋ค.
์ฐธ๊ณ ๋ก RESTful API์ REST API๋ ์์ ํ ๊ฐ์ ๊ฒ์ด ์๋๋ค! REST๋ผ๊ณ ๋ชจ๋ RESTful์ ์๋!
๋๊ธ๋จ๊ธฐ๊ธฐ