REST API ์ ๋๋ก ์๊ณ ์ฌ์ฉํ๊ธฐ
๋ชฉ์ฐจ
- REST API์ ํ์
- REST ๊ตฌ์ฑ
- REST ์ ํน์ง
- REST API ๋์์ธ ๊ฐ์ด๋
- HTTP ์๋ต ์ํ ์ฝ๋
์ด๋ ๋ ๋ฌ๊ธ์์ด ๋ํ๊ต ์น๊ตฌ์๊ฒ ์ ํ๊ฐ ์์ต๋๋ค. ๊ทธ๋ฌ๋๋ ‘์ผ, REST API๊ฐ ์ ํํ ๋ญ ์ด๋ค ๊ฑฐ์ผ? ํ๋ ์ง๋ฌธ์ ๊ฐ์ด์ ๋น์๊ฐ ๋ ์์ ๊ฝํ ๋ฏํ ๋๋์ ๋ฐ์์ต๋๋ค. ๋ฉฐ์น ์ ์นดํก์ผ๋ก ์์ฆ ๋ณดํต ์น์๋น์ค๋ค์ ‘REST APIํํ๋ก ์๋น์ค๋ฅผ ์ ๊ณตํ๋ค’๊ณ ์๋ ์ฒ์ ์กฐ๊ธ ํ๋ ๊ธฐ์ต์ด ๋จธ๋ฆฟ์์ ๋น ๋ฅด๊ฒ ์ค์ณ ์ง๋๊ฐ๊ณ ๊ทธ ์๊ฐ ๋์ถฉ ์ผ๋ฒ๋ฌด๋ฆฌ๋ฉฐ ‘์, ๊ทธ๊ฑฐ RESTํ๊ฒ ํด๋ผ์ด์ธํธ๋ ์๋ฒ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ฐฉ์’์ ๋งํ๋ค๋ฉฐ ์ผ๋ ๋ฑ๋ ๋ง๋ฌด๋ฆฌ ์ง์๋ ๊ธฐ์ต์ด ๋ฉ๋๋ค. ์ค์ ๋ก REST API์ ์๋น์ค๋ฅผ ์ง์ ๊ฐ๋ฐ๋ ํด๋ณด๊ณ ์ฌ์ฉ๋ ํด๋ดค๋๋ฐ๋ ๋ง์ ์ค๋ช ์ ํ์๋ ์ด๋ ค์์ ๊ฒช์๋ ์ ์ด ์์ผ์ จ์ ํ ๋ฐ์. ๊ทธ๋์ ์ด๋ฒ์ REST API์ ๋ํด ์ ๋ฆฌํ๊ฒ ๋์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ธ REST API์ ๋ํ ๋ด์ฉ ์ธ์๋ REST API๋ฅผ ์ค๊ณํ์ค ๋ ์ฐธ๊ณ ํด์ผ ํ ๋ช ๊ฐ์ง TIP๋ค์ ๋ํด ๊ณต์ ํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
1. REST API์ ํ์
REST๋ Representational State Transfer๋ผ๋ ์ฉ์ด์ ์ฝ์๋ก์ 2000๋ ๋์ ๋ก์ด ํ๋ฉ (Roy Fielding)์ ๋ฐ์ฌํ์ ๋ ผ๋ฌธ์์ ์ต์ด๋ก ์๊ฐ๋์์ต๋๋ค. ๋ก์ด ํ๋ฉ์ HTTP์ ์ฃผ์ ์ ์ ์ค ํ ์ฌ๋์ผ๋ก ๊ทธ ๋น์ ์น(HTTP) ์ค๊ณ์ ์ฐ์์ฑ์ ๋นํด ์ ๋๋ก ์ฌ์ฉ๋์ด์ง์ง ๋ชปํ๋ ๋ชจ์ต์ ์ํ๊น์ํ๋ฉฐ ์น์ ์ฅ์ ์ ์ต๋ํ ํ์ฉํ ์ ์๋ ์ํคํ ์ฒ๋ก์จ REST๋ฅผ ๋ฐํํ๋ค๊ณ ํฉ๋๋ค.
2. REST ๊ตฌ์ฑ
์ฝ๊ฒ ๋งํด REST API๋ ๋ค์์ ๊ตฌ์ฑ์ผ๋ก ์ด๋ฃจ์ด์ ธ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ฐ์์ ์ค๋ช ํ๋๋ก ํ๊ฒ ์ต๋๋ค.
- ์์(RESOURCE) - URI
- ํ์(Verb) - HTTP METHOD
- ํํ(Representations)
3. REST ์ ํน์ง
1) Uniform (์ ๋ํผ ์ธํฐํ์ด์ค)
Uniform Interface๋ URI๋ก ์ง์ ํ ๋ฆฌ์์ค์ ๋ํ ์กฐ์์ ํต์ผ๋๊ณ ํ์ ์ ์ธ ์ธํฐํ์ด์ค๋ก ์ํํ๋ ์ํคํ ์ฒ ์คํ์ผ์ ๋งํฉ๋๋ค.
2) Stateless (๋ฌด์ํ์ฑ)
REST๋ ๋ฌด์ํ์ฑ ์ฑ๊ฒฉ์ ๊ฐ์ต๋๋ค. ๋ค์ ๋งํด ์์ ์ ์ํ ์ํ์ ๋ณด๋ฅผ ๋ฐ๋ก ์ ์ฅํ๊ณ ๊ด๋ฆฌํ์ง ์์ต๋๋ค. ์ธ์ ์ ๋ณด๋ ์ฟ ํค์ ๋ณด๋ฅผ ๋ณ๋๋ก ์ ์ฅํ๊ณ ๊ด๋ฆฌํ์ง ์๊ธฐ ๋๋ฌธ์ API ์๋ฒ๋ ๋ค์ด์ค๋ ์์ฒญ๋ง์ ๋จ์ํ ์ฒ๋ฆฌํ๋ฉด ๋ฉ๋๋ค. ๋๋ฌธ์ ์๋น์ค์ ์์ ๋๊ฐ ๋์์ง๊ณ ์๋ฒ์์ ๋ถํ์ํ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ์ง ์์์ผ๋ก์จ ๊ตฌํ์ด ๋จ์ํด์ง๋๋ค.
3) Cacheable (์บ์ ๊ฐ๋ฅ)
REST์ ๊ฐ์ฅ ํฐ ํน์ง ์ค ํ๋๋ HTTP๋ผ๋ ๊ธฐ์กด ์นํ์ค์ ๊ทธ๋๋ก ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์, ์น์์ ์ฌ์ฉํ๋ ๊ธฐ์กด ์ธํ๋ผ๋ฅผ ๊ทธ๋๋ก ํ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค. ๋ฐ๋ผ์ HTTP๊ฐ ๊ฐ์ง ์บ์ฑ ๊ธฐ๋ฅ์ด ์ ์ฉ ๊ฐ๋ฅํฉ๋๋ค. HTTP ํ๋กํ ์ฝ ํ์ค์์ ์ฌ์ฉํ๋ Last-Modifiedํ๊ทธ๋ E-Tag๋ฅผ ์ด์ฉํ๋ฉด ์บ์ฑ ๊ตฌํ์ด ๊ฐ๋ฅํฉ๋๋ค.
4) Self-descriptiveness (์์ฒด ํํ ๊ตฌ์กฐ)
REST์ ๋ ๋ค๋ฅธ ํฐ ํน์ง ์ค ํ๋๋ REST API ๋ฉ์์ง๋ง ๋ณด๊ณ ๋ ์ด๋ฅผ ์ฝ๊ฒ ์ดํด ํ ์ ์๋ ์์ฒด ํํ ๊ตฌ์กฐ๋ก ๋์ด ์๋ค๋ ๊ฒ์ ๋๋ค.
5) Client - Server ๊ตฌ์กฐ
REST ์๋ฒ๋ API ์ ๊ณต, ํด๋ผ์ด์ธํธ๋ ์ฌ์ฉ์ ์ธ์ฆ์ด๋ ์ปจํ ์คํธ(์ธ์ , ๋ก๊ทธ์ธ ์ ๋ณด)๋ฑ์ ์ง์ ๊ด๋ฆฌํ๋ ๊ตฌ์กฐ๋ก ๊ฐ๊ฐ์ ์ญํ ์ด ํ์คํ ๊ตฌ๋ถ๋๊ธฐ ๋๋ฌธ์ ํด๋ผ์ด์ธํธ์ ์๋ฒ์์ ๊ฐ๋ฐํด์ผ ํ ๋ด์ฉ์ด ๋ช ํํด์ง๊ณ ์๋ก๊ฐ ์์กด์ฑ์ด ์ค์ด๋ค๊ฒ ๋ฉ๋๋ค.
6) ๊ณ์ธตํ ๊ตฌ์กฐ
REST ์๋ฒ๋ ๋ค์ค ๊ณ์ธต์ผ๋ก ๊ตฌ์ฑ๋ ์ ์์ผ๋ฉฐ ๋ณด์, ๋ก๋ ๋ฐธ๋ฐ์ฑ, ์ํธํ ๊ณ์ธต์ ์ถ๊ฐํด ๊ตฌ์กฐ์์ ์ ์ฐ์ฑ์ ๋ ์ ์๊ณ PROXY, ๊ฒ์ดํธ์จ์ด ๊ฐ์ ๋คํธ์ํฌ ๊ธฐ๋ฐ์ ์ค๊ฐ๋งค์ฒด๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ํฉ๋๋ค.
4. REST API ๋์์ธ ๊ฐ์ด๋
REST API ์ค๊ณ ์ ๊ฐ์ฅ ์ค์ํ ํญ๋ชฉ์ ๋ค์์ 2๊ฐ์ง๋ก ์์ฝํ ์ ์์ต๋๋ค.
์ฒซ ๋ฒ์งธ, URI๋ ์ ๋ณด์ ์์์ ํํํด์ผ ํ๋ค.
๋ ๋ฒ์งธ, ์์์ ๋ํ ํ์๋ HTTP Method(GET, POST, PUT, DELETE)๋ก ํํํ๋ค.
๋ค๋ฅธ ๊ฒ์ ๋ค ์์ด๋ ์ ๋ด์ฉ์ ๊ผญ ๊ธฐ์ตํ์๊ธธ ๋ฐ๋๋๋ค.
4-1. REST API ์ค์ฌ ๊ท์น
1) URI๋ ์ ๋ณด์ ์์์ ํํํด์ผ ํ๋ค. (๋ฆฌ์์ค๋ช ์ ๋์ฌ๋ณด๋ค๋ ๋ช ์ฌ๋ฅผ ์ฌ์ฉ)
GET /members/delete/1
์์ ๊ฐ์ ๋ฐฉ์์ REST๋ฅผ ์ ๋๋ก ์ ์ฉํ์ง ์์ URI์ ๋๋ค. URI๋ ์์์ ํํํ๋๋ฐ ์ค์ ์ ๋์ด์ผ ํฉ๋๋ค. delete์ ๊ฐ์ ํ์์ ๋ํ ํํ์ด ๋ค์ด๊ฐ์๋ ์๋ฉ๋๋ค.
2) ์์์ ๋ํ ํ์๋ HTTP Method(GET, POST, PUT, DELETE ๋ฑ)๋ก ํํ
์์ ์๋ชป ๋ URI๋ฅผ HTTP Method๋ฅผ ํตํด ์์ ํด ๋ณด๋ฉด
DELETE /members/1
์ผ๋ก ์์ ํ ์ ์๊ฒ ์ต๋๋ค.
ํ์์ ๋ณด๋ฅผ ๊ฐ์ ธ์ฌ ๋๋ GET, ํ์ ์ถ๊ฐ ์์ ํ์๋ฅผ ํํํ๊ณ ์ ํ ๋๋ POST METHOD๋ฅผ ์ฌ์ฉํ์ฌ ํํํฉ๋๋ค.
ํ์์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๋ URI
GET /members/show/1 (x)
GET /members/1 (o)
ํ์์ ์ถ๊ฐํ ๋
GET /members/insert/2 (x) - GET ๋ฉ์๋๋ ๋ฆฌ์์ค ์์ฑ์ ๋ง์ง ์์ต๋๋ค.
POST /members/2 (o)
[์ฐธ๊ณ ]HTTP METHOD์ ์๋ง์ ์ญํ
POST, GET, PUT, DELETE ์ด 4๊ฐ์ง์ Method๋ฅผ ๊ฐ์ง๊ณ CRUD๋ฅผ ํ ์ ์์ต๋๋ค.
METHOD์ญํ
POST | POST๋ฅผ ํตํด ํด๋น URI๋ฅผ ์์ฒญํ๋ฉด ๋ฆฌ์์ค๋ฅผ ์์ฑํฉ๋๋ค. |
GET | GET๋ฅผ ํตํด ํด๋น ๋ฆฌ์์ค๋ฅผ ์กฐํํฉ๋๋ค. ๋ฆฌ์์ค๋ฅผ ์กฐํํ๊ณ ํด๋น ๋ํ๋จผํธ์ ๋ํ ์์ธํ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์จ๋ค. |
PUT | PUT๋ฅผ ํตํด ํด๋น ๋ฆฌ์์ค๋ฅผ ์์ ํฉ๋๋ค. |
DELETE | DELETE๋ฅผ ํตํด ๋ฆฌ์์ค๋ฅผ ์ญ์ ํฉ๋๋ค. |
๋ค์๊ณผ ๊ฐ์ ์์ผ๋ก URI๋ ์์์ ํํํ๋ ๋ฐ์ ์ง์คํ๊ณ ํ์์ ๋ํ ์ ์๋ HTTP METHOD๋ฅผ ํตํด ํ๋ ๊ฒ์ด RESTํ API๋ฅผ ์ค๊ณํ๋ ์ค์ฌ ๊ท์น์ ๋๋ค.
4-2. URI ์ค๊ณ ์ ์ฃผ์ํ ์
1) ์ฌ๋์ ๊ตฌ๋ถ์(/)๋ ๊ณ์ธต ๊ด๊ณ๋ฅผ ๋ํ๋ด๋ ๋ฐ ์ฌ์ฉ
http://restapi.example.com/houses/apartments
http://restapi.example.com/animals/mammals/whales
2) URI ๋ง์ง๋ง ๋ฌธ์๋ก ์ฌ๋์(/)๋ฅผ ํฌํจํ์ง ์๋๋ค.
URI์ ํฌํจ๋๋ ๋ชจ๋ ๊ธ์๋ ๋ฆฌ์์ค์ ์ ์ผํ ์๋ณ์๋ก ์ฌ์ฉ๋์ด์ผ ํ๋ฉฐ URI๊ฐ ๋ค๋ฅด๋ค๋ ๊ฒ์ ๋ฆฌ์์ค๊ฐ ๋ค๋ฅด๋ค๋ ๊ฒ์ด๊ณ , ์ญ์ผ๋ก ๋ฆฌ์์ค๊ฐ ๋ค๋ฅด๋ฉด URI๋ ๋ฌ๋ผ์ ธ์ผ ํฉ๋๋ค. REST API๋ ๋ถ๋ช ํ URI๋ฅผ ๋ง๋ค์ด ํต์ ์ ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ํผ๋์ ์ฃผ์ง ์๋๋ก URI ๊ฒฝ๋ก์ ๋ง์ง๋ง์๋ ์ฌ๋์(/)๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค.
http://restapi.example.com/houses/apartments/ (X)
http://restapi.example.com/houses/apartments (0)
3) ํ์ดํ(-)์ URI ๊ฐ๋ ์ฑ์ ๋์ด๋๋ฐ ์ฌ์ฉ
URI๋ฅผ ์ฝ๊ฒ ์ฝ๊ณ ํด์ํ๊ธฐ ์ํด, ๋ถ๊ฐํผํ๊ฒ ๊ธด URI๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ค๋ฉด ํ์ดํ์ ์ฌ์ฉํด ๊ฐ๋ ์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
4) ๋ฐ์ค(_)์ URI์ ์ฌ์ฉํ์ง ์๋๋ค.
๊ธ๊ผด์ ๋ฐ๋ผ ๋ค๋ฅด๊ธด ํ์ง๋ง ๋ฐ์ค์ ๋ณด๊ธฐ ์ด๋ ต๊ฑฐ๋ ๋ฐ์ค ๋๋ฌธ์ ๋ฌธ์๊ฐ ๊ฐ๋ ค์ง๊ธฐ๋ ํฉ๋๋ค. ์ด๋ฐ ๋ฌธ์ ๋ฅผ ํผํ๊ธฐ ์ํด ๋ฐ์ค ๋์ ํ์ดํ(-)์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.(๊ฐ๋ ์ฑ)
5) URI ๊ฒฝ๋ก์๋ ์๋ฌธ์๊ฐ ์ ํฉํ๋ค.
URI ๊ฒฝ๋ก์ ๋๋ฌธ์ ์ฌ์ฉ์ ํผํ๋๋ก ํด์ผ ํฉ๋๋ค. ๋์๋ฌธ์์ ๋ฐ๋ผ ๋ค๋ฅธ ๋ฆฌ์์ค๋ก ์ธ์ํ๊ฒ ๋๊ธฐ ๋๋ฌธ์ ๋๋ค. RFC 3986(URI ๋ฌธ๋ฒ ํ์)์ URI ์คํค๋ง์ ํธ์คํธ๋ฅผ ์ ์ธํ๊ณ ๋ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ณํ๋๋ก ๊ท์ ํ๊ธฐ ๋๋ฌธ์ด์ง์.
RFC 3986 is the URI (Unified Resource Identifier) Syntax document
6) ํ์ผ ํ์ฅ์๋ URI์ ํฌํจ์ํค์ง ์๋๋ค.
http://restapi.example.com/members/soccer/345/photo.jpg (X)
REST API์์๋ ๋ฉ์์ง ๋ฐ๋ ๋ด์ฉ์ ํฌ๋งท์ ๋ํ๋ด๊ธฐ ์ํ ํ์ผ ํ์ฅ์๋ฅผ URI ์์ ํฌํจ์ํค์ง ์์ต๋๋ค. Accept header๋ฅผ ์ฌ์ฉํ๋๋ก ํฉ์๋ค.
GET / members/soccer/345/photo HTTP/1.1 Host: restapi.example.com Accept: image/jpg
4-3. ๋ฆฌ์์ค ๊ฐ์ ๊ด๊ณ๋ฅผ ํํํ๋ ๋ฐฉ๋ฒ
REST ๋ฆฌ์์ค ๊ฐ์๋ ์ฐ๊ด ๊ด๊ณ๊ฐ ์์ ์ ์๊ณ , ์ด๋ฐ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ ํํ๋ฐฉ๋ฒ์ผ๋ก ์ฌ์ฉํฉ๋๋ค.
/๋ฆฌ์์ค๋ช
/๋ฆฌ์์ค ID/๊ด๊ณ๊ฐ ์๋ ๋ค๋ฅธ ๋ฆฌ์์ค๋ช
ex) GET : /users/{userid}/devices (์ผ๋ฐ์ ์ผ๋ก ์์ ‘has’์ ๊ด๊ณ๋ฅผ ํํํ ๋)
๋ง์ฝ์ ๊ด๊ณ๋ช ์ด ๋ณต์กํ๋ค๋ฉด ์ด๋ฅผ ์๋ธ ๋ฆฌ์์ค์ ๋ช ์์ ์ผ๋ก ํํํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ฌ์ฉ์๊ฐ ‘์ข์ํ๋’ ๋๋ฐ์ด์ค ๋ชฉ๋ก์ ํํํด์ผ ํ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ ํํ๋ก ์ฌ์ฉ๋ ์ ์์ต๋๋ค.
GET : /users/{userid}/likes/devices (๊ด๊ณ๋ช
์ด ์ ๋งคํ๊ฑฐ๋ ๊ตฌ์ฒด์ ํํ์ด ํ์ํ ๋)
4-4. ์์์ ํํํ๋ Colllection๊ณผ Document
Collection๊ณผ Document์ ๋ํด ์๋ฉด URI ์ค๊ณ๊ฐ ํ ์ธต ๋ ์ฌ์์ง๋๋ค. DOCUMENT๋ ๋จ์ํ ๋ฌธ์๋ก ์ดํดํด๋ ๋๊ณ , ํ ๊ฐ์ฒด๋ผ๊ณ ์ดํดํ์ ๋ ๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ปฌ๋ ์ ์ ๋ฌธ์๋ค์ ์งํฉ, ๊ฐ์ฒด๋ค์ ์งํฉ์ด๋ผ๊ณ ์๊ฐํ์๋ฉด ์ดํดํ์๋๋ฐ ์ข๋ ํธํ์ค ๊ฒ ๊ฐ์ต๋๋ค. ์ปฌ๋ ์ ๊ณผ ๋ํ๋จผํธ๋ ๋ชจ๋ ๋ฆฌ์์ค๋ผ๊ณ ํํํ ์ ์์ผ๋ฉฐ URI์ ํํ๋ฉ๋๋ค. ์๋ฅผ ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
http:// restapi.example.com/sports/soccer
์ URI๋ฅผ ๋ณด์๋ฉด sports๋ผ๋ ์ปฌ๋ ์ ๊ณผ soccer๋ผ๋ ๋ํ๋จผํธ๋ก ํํ๋๊ณ ์๋ค๊ณ ์๊ฐํ๋ฉด ๋ฉ๋๋ค. ์ข ๋ ์๋ฅผ ๋ค์ด๋ณด์๋ฉด
http:// restapi.example.com/sports/soccer/players/13
sports, players ์ปฌ๋ ์ ๊ณผ soccer, 13(13๋ฒ์ธ ์ ์)๋ฅผ ์๋ฏธํ๋ ๋ํ๋จผํธ๋ก URI๊ฐ ์ด๋ฃจ์ด์ง๊ฒ ๋ฉ๋๋ค. ์ฌ๊ธฐ์ ์ค์ํ ์ ์ ์ปฌ๋ ์ ์ ๋ณต์๋ก ์ฌ์ฉํ๊ณ ์๋ค๋ ์ ์ ๋๋ค. ์ข ๋ ์ง๊ด์ ์ธ REST API๋ฅผ ์ํด์๋ ์ปฌ๋ ์ ๊ณผ ๋ํ๋จผํธ๋ฅผ ์ฌ์ฉํ ๋ ๋จ์ ๋ณต์๋ ์ง์ผ์ค๋ค๋ฉด ์ข ๋ ์ดํดํ๊ธฐ ์ฌ์ด URI๋ฅผ ์ค๊ณํ ์ ์์ต๋๋ค.
5. HTTP ์๋ต ์ํ ์ฝ๋
๋ง์ง๋ง์ผ๋ก ์๋ต ์ํ์ฝ๋๋ฅผ ๊ฐ๋จํ ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ์ ์ค๊ณ๋ REST API๋ URI๋ง ์ ์ค๊ณ๋ ๊ฒ์ด ์๋ ๊ทธ ๋ฆฌ์์ค์ ๋ํ ์๋ต์ ์ ๋ด์ด์ฃผ๋ ๊ฒ๊น์ง ํฌํจ๋์ด์ผ ํฉ๋๋ค. ์ ํํ ์๋ต์ ์ํ์ฝ๋๋ง์ผ๋ก๋ ๋ง์ ์ ๋ณด๋ฅผ ์ ๋ฌํ ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ์๋ต์ ์ํ์ฝ๋ ๊ฐ์ ๋ช
ํํ ๋๋ ค์ฃผ๋ ๊ฒ์ ์๊ฐ๋ณด๋ค ์ค์ํ ์ผ์ด ๋ ์๋ ์์ต๋๋ค. ํน์ 200์ด๋ 4XX๊ด๋ จ ํน์ ์ฝ๋ ์ ๋๋ง ์ฌ์ฉํ๊ณ ์๋ค๋ฉด ์ฒ๋ฆฌ ์ํ์ ๋ํ ์ข ๋ ๋ช
ํํ ์ํ์ฝ๋ ๊ฐ์ ์ฌ์ฉํ ์ ์๊ธฐ๋ฅผ ๊ถ์ฅํ๋ ๋ฐ์
๋๋ค.
์ํ์ฝ๋์ ๋ํด์๋ ๋ช ๊ฐ์ง๋ง ์ ๋ฆฌํ๋๋ก ํ๊ฒ ์ต๋๋ค.
์ํ์ฝ๋
200 | ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ ์์ ์ผ๋ก ์ํํจ |
201 | ํด๋ผ์ด์ธํธ๊ฐ ์ด๋ ํ ๋ฆฌ์์ค ์์ฑ์ ์์ฒญ, ํด๋น ๋ฆฌ์์ค๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์์ฑ๋จ(POST๋ฅผ ํตํ ๋ฆฌ์์ค ์์ฑ ์์ ์) |
์ํ์ฝ๋
400 | ํด๋ผ์ด์ธํธ์ ์์ฒญ์ด ๋ถ์ ์ ํ ๊ฒฝ์ฐ ์ฌ์ฉํ๋ ์๋ต ์ฝ๋ |
401 | ํด๋ผ์ด์ธํธ๊ฐ ์ธ์ฆ๋์ง ์์ ์ํ์์ ๋ณดํธ๋ ๋ฆฌ์์ค๋ฅผ ์์ฒญํ์ ๋ ์ฌ์ฉํ๋ ์๋ต ์ฝ๋ |
(๋ก๊ทธ์ธ ํ์ง ์์ ์ ์ ๊ฐ ๋ก๊ทธ์ธ ํ์ ๋, ์์ฒญ ๊ฐ๋ฅํ ๋ฆฌ์์ค๋ฅผ ์์ฒญํ์ ๋) | |
403 | ์ ์ ์ธ์ฆ์ํ์ ๊ด๊ณ ์์ด ์๋ตํ๊ณ ์ถ์ง ์์ ๋ฆฌ์์ค๋ฅผ ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญํ์ ๋ ์ฌ์ฉํ๋ ์๋ต ์ฝ๋ |
(403 ๋ณด๋ค๋ 400์ด๋ 404๋ฅผ ์ฌ์ฉํ ๊ฒ์ ๊ถ๊ณ . 403 ์์ฒด๊ฐ ๋ฆฌ์์ค๊ฐ ์กด์ฌํ๋ค๋ ๋ป์ด๊ธฐ ๋๋ฌธ์) | |
405 | ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญํ ๋ฆฌ์์ค์์๋ ์ฌ์ฉ ๋ถ๊ฐ๋ฅํ Method๋ฅผ ์ด์ฉํ์ ๊ฒฝ์ฐ ์ฌ์ฉํ๋ ์๋ต ์ฝ๋ |
์ํ์ฝ๋
301 | ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญํ ๋ฆฌ์์ค์ ๋ํ URI๊ฐ ๋ณ๊ฒฝ ๋์์ ๋ ์ฌ์ฉํ๋ ์๋ต ์ฝ๋ |
(์๋ต ์ Location header์ ๋ณ๊ฒฝ๋ URI๋ฅผ ์ ์ด ์ค์ผ ํฉ๋๋ค.) | |
500 | ์๋ฒ์ ๋ฌธ์ ๊ฐ ์์ ๊ฒฝ์ฐ ์ฌ์ฉํ๋ ์๋ต ์ฝ๋ |
๊ธ์ ๋ง์น๋ฉฐ
RESTFulํ API๋ฅผ ์ค๊ณํ์ค ๋ ๋์์ด ๋ ๋งํ ๋ด์ฉ๋ค์ ์ ๋๋ฆ์ ์ฐ์ ์์๋ฅผ ๊ฐ์ง๊ณ ์ ๋ฆฌํด ๋ณด์์ต๋๋ค. ์ ๋ฆฌ๋ฅผ ํ๋ฉด์ ๋ค์ ํ ๋ฒ ๋๋ ๊ฒ์ ์ ํํ ์์ง ๋ชปํ๋ฉด '์ค๋ช
ํ ์ ์๋ค'๋ ๊ฒ์
๋๋ค. ๋๊ตฐ๊ฐ๊ฐ ๊ทธ๋ฐ ๋ง์ ํ์์ต๋๋ค. '๋น์ ์ด ์ด๋ค ๊ฒ์ ํ ๋จธ๋์๊ฒ ์ค๋ช
ํด ์ฃผ์ง ๋ชปํ๋ค๋ฉด, ๊ทธ๊ฒ์ ์ง์ ์ผ๋ก ์ดํดํ ๊ฒ์ด ์๋๋ค.' ์ ๋ฌธ๊ตฌ๋ฅผ ํญ์ ๊ฐ์ด ๊น์ด ์๊ธฐ๊ณ ์์ผ๋ก ๋ฌด์์ธ๊ฐ ์๋ก์ด ์ง์์ ํ์ตํด ์ค๋ฌด์ ์ ์ฉํ ๋์๋ '๋์ถฉ'์ด ์๋ '์ ํํ ์ดํด'๋ฅผ ๋ฐํ์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด ๋๊ฐ๋๋ก ํด์ผ๊ฒ ๋ค๋ ๋ค์ง๊ณผ ํจ๊ป ๊ธ์ ๋ง๋ฌด๋ฆฌ ์ง๋๋ก ํ๊ฒ ์ต๋๋ค.
๋ง์ง๋ง์ผ๋ก REST API๋ ์ ํด์ง ๋ช
ํํ ํ์ค์ด ์๊ธฐ ๋๋ฌธ์ REST API๋ฅผ ์ฌ์ฉํจ์ ์์ด '๋ฌด์์ด ์ณ๊ณ ๊ทธ๋ฅธ์ง'๊ฐ ์๋ ๊ฐ๋ฐํ๋ ์๋น์ค์ ํน์ง๊ณผ ๊ฐ๋ฐ ์ง๋จ์ ํ๊ฒฝ๊ณผ ์ฑํฅ ๋ฑ์ด ์ถฉ๋ถํ ๊ณ ๋ ค๋์ด ์ค๊ณ๋์ด์ผ ํ ๊ฒ์
๋๋ค.
๋ถ์กฑํ ๋ด์ฉ์ด๋ ์๋ชป๋ ๋ด์ฉ์ด ์๋ค๋ฉด ๋๊ธ ๋ถํ ๋๋ฆฝ๋๋ค.
๊ธด ๊ธ ์ฝ์ด์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค.
'๐ฐ News > think' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๋ฒ๋ ์ ํ์ํ๊ฐ? (0) | 2022.05.11 |
---|---|
Git Bash ๋? (0) | 2022.05.07 |
Http Method ๋? (GET, POST, PUT, DELETE) (0) | 2022.05.05 |
CI/CD๋? (DevOps ์์ง๋์ด์ ํต์ฌ ์ ๋ฌด) (0) | 2022.04.28 |
Computer Vision's understanding (0) | 2022.04.16 |