REST
๋, ์น์ ์กด์ฌํ๋ ๋ชจ๋ ์์(์ด๋ฏธ์ง, ๋์์, DB์์ ๋ฑ)์ ๊ณ ์ ํ URL์ ๋ถ์ฌ ํด ํ์ฉํ๋ ๊ฒ.๋ฐฉ๋ฒ๋ก
์ ์๋ฏธํ๋ค. โ ์์(resource)์ ํํ(representation)
์์
: ํด๋น ์ํํธ์จ์ด๊ฐ ๊ด๋ฆฌํ๋ ๋ชจ๋ ๊ฒ
Ex) ๋ฌธ์, ๊ทธ๋ฆผ, ๋ฐ์ดํฐ, ํด๋น ์ํํธ์จ์ด ์์ฒด ๋ฑ
์์์ ํํ
: ๊ทธ ์์์ ํํํ๊ธฐ ์ํ ์ด๋ฆ
Ex) DB์ ํ์ ์ ๋ณด๊ฐ ์์์ผ ๋, โstudentsโ๋ฅผ ์์์ ํํ์ผ๋ก ์ ํ๋ค.
์ํ(์ ๋ณด) ์ ๋ฌ
:
- ๋ฐ์ดํฐ๊ฐ ์์ฒญ๋์ด์ง๋ ์์ ์์ ์์์ ์ํ(์ ๋ณด)๋ฅผ ์ ๋ฌํ๋ค.
- JSON ํน์ XML๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด๋ค.
- ์๋ ์์ด๋ ์น(www)๊ณผ ๊ฐ์ ๋ถ์ฐ ํ์ดํผ๋ฏธ๋์ด ์์คํ ์ ์ํ ์ํํธ์จ์ด ๊ฐ๋ฐ ์ํคํ ์ฒ์ ํ ํ์
REST๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์น์ ๊ธฐ์กด ๊ธฐ์ ๊ณผ HTTP ํ๋กํ ์ฝ์ ๊ทธ๋๋ก ํ์ฉํ๊ธฐ ๋๋ฌธ์ ์น์ ์ฅ์ ์ ์ต๋ํ ํ์ฉํ ์ ์๋ ์ํคํ ์ฒ ์คํ์ผ์ด๋ค.
REST๋ ๋คํธ์ํฌ ์์์ Client์ Server ์ฌ์ด์ ํต์ ๋ฐฉ์ ์ค ํ๋์ด๋ค.
โ ๋ฐ๋ผ์ RESTful API
๋, REST
์ ํน์ง์ ์งํค๋ฉด์ API๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
โ RESTful API
๋, ๊ฒฐ๊ตญ HTTP ํ๋กํ ์ฝ ์ฅ์ ์ ์ด๋ฆด ์ ์๋ ๋คํธ์ํฌ ๊ธฐ๋ฐ ์ํคํ
์ฒ๋ฅผ ๋ปํ๋ค.
์ ํ๋ฆฌ์ผ์ด์
๋ถ๋ฆฌ ๋ฐ ํตํฉ
์ ํ๋ฆฌ์ผ์ด์
์ ๋ณต์ก๋๊ฐ ์ฆ๊ฐํ๋ฉด์ ์ ํ๋ฆฌ์ผ์ด์
์ ์ด๋ป๊ฒ ๋ถ๋ฆฌํ๊ณ ํตํฉ ํ๋๋๊ฐ ์ฃผ์ ์ด์๊ฐ ๋์๊ณ , ์ด์ REST๊ฐ ์ด์๊ฐ ๋์๋ค.
๋ค์ํ ํด๋ผ์ด์ธํธ์ ๋ฑ์ฅ
๋ชจ๋ฐ์ผ๊ณผ ๊ฐ์ ๋ค์ํ ํด๋ผ์ด์ธํธ๊ฐ ๋ฑ์ฅํ๋ฉด์ backend ํ๋๋ก ๋ค์ํ ๋๋ฐ์ด์ค๋ฅผ ๋์ํ๊ธฐ ์ํด REST์ ํ์์ฑ์ด ์ฆ๋ํ์๋ค.
์ด๋ฌํ ๋ฉํฐ ํ๋ซํผ์ ๋ํ ์ง์์ ์ํด ์๋น์ค ์์์ ๋ํ ์ํคํ ์ฒ๋ฅผ ์ธ์ฐ๊ณ ์ด์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ชจ์ํ ๊ฒฐ๊ณผ, REST์ ๊ด์ฌ์ ๊ฐ์ง๊ฒ ๋์๋ค.
HTTP URI
(Uniform Resource Identifier)๋ฅผ ํตํด ์์(Resource)์ ๋ช
์ํ๊ณ , HTTP Method
(POST, GET, PUT, DELETE)๋ฅผ ํตํด ํด๋น ์์์ ๋ํ CRUD Operation์ ์ ์ฉํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
์ฆ, REST๋ ์์ ๊ธฐ๋ฐ์ ๊ตฌ์กฐ(ROA, Resource Oriented Architecture) ์ค๊ณ์ ์ค์ฌ์ Resource๊ฐ ์๊ณ ,
HTTP Method๋ฅผ ํตํด Resource๋ฅผ ์ฒ๋ฆฌํ๋๋ก ์ค๊ณ๋ ์ํคํ
์ณ๋ฅผ ์๋ฏธํ๋ค.
์น ์ฌ์ดํธ์ ์ด๋ฏธ์ง, ํ ์คํธ, DB ๋ด์ฉ ๋ฑ์ ๋ชจ๋ ์์์ ๊ณ ์ ํ ID์ธ HTTP URI๋ฅผ ๋ถ์ฌํ๋ค.
โ URI (Uniform Resource Indenfier)
์น์๋ฒ์ ๋ฆฌ์์ค๋ ๊ฐ์ ์ด๋ฆ์ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์, ํด๋ผ์ด์ธํธ๋ ์ด๋ฌํ ์ด๋ฆ์ ํตํด ์ํ๋ ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์๋ค.
์ด๋ ์๋ฒ ๋ฆฌ์์ค์ ์ด๋ฆ์ ํตํฉ ์์ ์๋ณ์ ๋๋URI
๋ผ๊ณ ๋ถ๋ฅธ๋ค.์๋ฅผ๋ค์ด, ์นด์นด์ค ์ฌ์ดํธ๋ฅผ ์ ์ํ์ฌ news๋ผ๋ ๋ฉ๋ด๋ฅผ ํด๋ฆญํ๋ค๊ณ ๊ฐ์ ํด๋ณด์.
๋ฉ๋ด๋ฅผ ํด๋ฆญํ๋ฉด https://www.kakaocorp.com/kakao/introduce/news ์ ๊ฐ์ด URI ๊ฐ ์์ฑ๋๋ค.
- https:// ๐ HTTP ํ๋ก์ฝ์ ์ฌ์ฉํ๋ค๋ ๋ป (๋ค์ s ๋ ๊ธฐ์กด ํ๋ก์ฝ์์ ๋ณด์์ด ๊ฐํ๋ ๋ฒ์ )
- www.kakaocorp.com ๐ ์นด์นด์ค ์ฌ์ดํธ์ ์ฃผ์
- /kakao/introduce/vision ๐ ๋ฆฌ์์ค ์์น
โ CRUD Operation
Create
: ์์ฑ(POST)
Read
: ์กฐํ(GET)
Update
: ์์ (PUT)
Delete
: ์ญ์ (DELETE)
HEAD: header ์ ๋ณด ์กฐํ(HEAD)
์ฅ์
HTTP ํ๋กํ ์ฝ์ ์ธํ๋ผ๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ๋ฏ๋ก REST API ์ฌ์ฉ์ ์ํ ๋ณ๋์ ์ธํ๋ผ๋ฅผ ๊ตฌ์ถํ ํ์๊ฐ ์๋ค.
HTTP ํ์ค ํ๋กํ ์ฝ์ ๋ฐ๋ฅด๋ ๋ชจ๋ ํ๋ซํผ์์ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
Hypermedia API์ ๊ธฐ๋ณธ์ ์ถฉ์คํ ์งํค๋ฉด์ ๋ฒ์ฉ์ฑ์ ๋ณด์ฅํ๋ค.
REST API ๋ฉ์์ง๊ฐ ์๋ํ๋ ๋ฐ๋ฅผ ๋ช ํํ๊ฒ ๋ํ๋ด๋ฏ๋ก ์๋ํ๋ ๋ฐ(๋ชฉ์ )๋ฅผ ์ฝ๊ฒ ํ์ ํ ์ ์๋ค.
ex) ์์ฒญ ๋ด์ฉ์ ๋ณด๊ณ ์ฝ๊ฒ ํด์์ด ๊ฐ๋ฅํ๋ค.
https://api.trueshort.com/stock/003890 ์ ์ฃผ์๋ง ๋ด๋,
https://api.trueshort.com
๋ผ๋ API์์ A์ ์ ์ฃผ์์ ๊ดํ ์ ๋ณด๋ฅผ HTTP ์์ฒญ์ ํตํด ๋ฐ์์จ๋ค" ๋ผ๊ณ ํด์์ด ์ฝ๊ฒ ๊ฐ๋ฅํ๋ค.
์ฌ๋ฌ๊ฐ์ง ์๋น์ค ๋์์ธ์์ ์๊ธธ ์ ์๋ ๋ฌธ์ ๋ฅผ ์ต์ํํ๋ค.
์๋ฒ์ ํด๋ผ์ด์ธํธ์ ์ญํ ์ ๋ช ํํ๊ฒ ๋ถ๋ฆฌํ๋ค.
๋จ์
GET
, POST
, PUT
, DELETE
์ ๊ฐ์ ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ค.)๐ REST์ ๊ตฌ์ฑ
- ์์ (Resouce) - URI
- ํ์ (Verb) - HTTP Method
- ํํ (Representations)
EX)
/users GET
/users/{id} GET
/users PUT
์์) REST ๋ฐฉ์์ด ์ ์ฉ๋ RESTful API
- A์ฃผ์ ์ ๋ณด๋ฅผ ๋ฐ๊ธฐ ์ํ HTTP ์์ฒญ
๐ HTTP GET https://api.trueshort.com/stock/003890
[HTTP]
/[Method(GET): How to]
/[what]
- ์ ์ ์ ๋ณด์ ์ฃผ์ ์ข ๋ชฉ๋ค์ DB์ ์ ์ฅํ๋ HTTP ์์ฒญ
๐ HTTP POST https://api.trueshort.com/users/portfolios
[HTTP]
/[Method(POST): How to]
/[what]
๐ Client๊ฐ Server์๊ฒ ์์ฒญํ๋ ๋ฐฉ์.
- HTTP Method (4๊ฐ์ง)
POST
GET
PUT
(์ ์ฒด์์ ์์ฒญ, ์๋ก ๋ฎ์ด์์ฐ๋ ๊ฒ),DELETE
(๋ฐ์ดํฐ ์ญ์ ์์ฒญ),PATCH
(์ผ๋ถ ์์ ์์ฒญ)- 4๊ฐ์ง ์ฐ์ฐ =
INSERT
,SELECT
,UPDATE
,DELETE
- Payload = HTTP request์์ server๋ก ๋ณด๋ด๋ ๋ฐ์ดํฐ(body)
- URL :
http://x.x.x.x:00000/path1/filename.txt
- URI :
http://x.x.x.x:00000/products/smartphone
โ URI (Uniform Resource Identifier)
: ํด๋น ์ฌ์ดํธ์ ํน์ ์์์ ์์น๋ฅผ ๋ํ๋ด๋ ์ ์ผํ ์ฃผ์
Uniform (์ ๋ํผ ์ธํฐํ์ด์ค)
Self-descriptiveness (์์ฒด ํํ ๊ตฌ์กฐ) : ๋์ฌ(Method) + ๋ช ์ฌ(URI) ๋ก ์ด๋ฃจ์ด์ ธ์์ด ์ด๋ค ๋ฉ์๋์ ๋ฌด์จ ํ์๋ฅผ ํ๋์ง ์ ์ ์์ผ๋ฉฐ, ๋ฉ์์ง ํฌ๋งท ์ญ์ JSON์ ์ด์ฉํด์ ์ง๊ด์ ์ผ๋ก ์ดํด๊ฐ ๊ฐ๋ฅํ ๊ตฌ์กฐ๋ก, REST API ๋ฉ์์ง๋ง ๋ณด๊ณ ๋ ์ด๋ฅผ ์ฝ๊ฒ ์ดํดํ ์ ์๋ค.
Server-Client(์๋ฒ-ํด๋ผ์ด์ธํธ ๊ตฌ์กฐ)
์์์ด ์๋ ์ชฝ์ด Server, ์์์ ์์ฒญํ๋ ์ชฝ์ด Client๊ฐ ๋๋ค.
REST Server: API๋ฅผ ์ ๊ณตํ๊ณ ๋น์ฆ๋์ค ๋ก์ง ์ฒ๋ฆฌ ๋ฐ ์ ์ฅ์ ์ฑ ์์ง๋ค.
Client: ์ฌ์ฉ์ ์ธ์ฆ์ด๋ context(์ธ์
, ๋ก๊ทธ์ธ ์ ๋ณด) ๋ฑ์ ์ง์ ๊ด๋ฆฌํ๊ณ ์ฑ
์์ง๋ค.
์๋ก ๊ฐ ์์กด์ฑ์ด ์ค์ด๋ ๋ค.
๐ REST ์๋ฒ
๋ API ์ ๊ณต, ํด๋ผ์ด์ธํธ
๋ ์ฌ์ฉ์ ์ธ์ฆ์ด๋ ์ปจํ
์คํธ(์ธ์
, ๋ก๊ทธ์ธ ์ ๋ณด ๋ฑ)์ ์ง์ ๊ด๋ฆฌํ๋ ๊ตฌ์กฐ๋ก ๊ฐ๊ฐ์ ์ญํ ์ด ํ์คํ ๊ตฌ๋ถ๋๊ธฐ ๋๋ฌธ์ ํด๋ผ์ด์ธํธ์ ์๋ฒ์์ ๊ฐ๋ฐํด์ผ ํ ๋ด์ฉ์ด ๋ช
ํํด์ง๊ณ ์๋ก๊ฐ ์์กด์ฑ์ด ์ค์ด๋ค๊ฒ ๋๋ค.
Stateless(๋ฌด์ํ)
Cacheable(์บ์ ์ฒ๋ฆฌ ๊ฐ๋ฅ)
๐ก REST API ์ค๊ณ ๊ธฐ๋ณธ ๊ท์น
์ฐธ๊ณ ๋ฆฌ์์ค ์ํ
๋ํ๋จผํธ(document)
: ๊ฐ์ฒด ์ธ์คํด์ค๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ ์ฝ๋์ ์ ์ฌํ ๊ฐ๋
์ปฌ๋ ์ (collection)
: ์๋ฒ์์ ๊ด๋ฆฌํ๋ ๋๋ ํฐ๋ฆฌ๋ผ๋ ๋ฆฌ์์ค
์คํ ์ด(store)
: ํด๋ผ์ด์ธํธ์์ ๊ด๋ฆฌํ๋ ๋ฆฌ์์ค ์ ์ฅ์
1)
URI
๋ ์ ๋ณด์ ์์(resource)์ ํํํด์ผ ํ๋ค.
- resource๋ ๋์ฌ๋ณด๋ค๋
๋ช ์ฌ
๋ฅผ, ๋๋ฌธ์๋ณด๋ค๋์๋ฌธ์
๋ฅผ ์ฌ์ฉํ๋ค.- resource์ ๋ํ๋จผํธ ์ด๋ฆ์ผ๋ก๋
๋จ์ ๋ช ์ฌ
๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.- resource์ ์ปฌ๋ ์ ์ด๋ฆ์ผ๋ก๋
๋ณต์ ๋ช ์ฌ
๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.- resource์ ์คํ ์ด ์ด๋ฆ์ผ๋ก๋
๋ณต์ ๋ช ์ฌ
๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.Ex) GET /Member/1 ๐ GET /members/1
2) ์์์ ๋ํ ํ์๋ HTTP Method(GET, PUT, POST, DELETE ๋ฑ)๋ก ํํํ๋ค.
URI์ HTTP Method๊ฐ ๋ค์ด๊ฐ๋ฉด ์๋๋ค.
Ex) GET /members/delete/1 ๐ DELETE /members/1URI์ ํ์์ ๋ํ ๋์ฌ ํํ์ด ๋ค์ด๊ฐ๋ฉด ์๋๋ค.(์ฆ, CRUD ๊ธฐ๋ฅ์ ๋ํ๋ด๋ ๊ฒ์ URI์ ์ฌ์ฉํ์ง ์๋๋ค.)
Ex) GET /members/show/1 ๐ GET /members/1
Ex) GET /members/insert/2 ๐ POST /members/2๊ฒฝ๋ก ๋ถ๋ถ ์ค ๋ณํ๋ ๋ถ๋ถ์ ์ ์ผํ ๊ฐ์ผ๋ก ๋์ฒดํ๋ค.(์ฆ, :id๋ ํ๋์ ํน์ resource๋ฅผ ๋ํ๋ด๋ ๊ณ ์ ๊ฐ์ด๋ค.)
Ex) student๋ฅผ ์์ฑํ๋ route ๐ POST /students
Ex) id=12์ธ student๋ฅผ ์ญ์ ํ๋ route ๐ DELETE /students/12
REST API ์ค๊ณ ๊ท์น
์ฌ๋์ ๊ตฌ๋ถ์(
/
)๋ ๊ณ์ธต ๊ด๊ณ๋ฅผ ๋ํ๋ด๋๋ฐ ์ฌ์ฉํ๋ค.
Ex) http://restapi.example.com/houses/apartmentsURI์ ํฌํจ๋๋ ๋ชจ๋ ๊ธ์๋ ๋ฆฌ์์ค์ ์ ์ผํ ์๋ณ์๋ก ์ฌ์ฉ๋์ด์ผ ํ๋ฉฐ URI๊ฐ ๋ค๋ฅด๋ค๋ ๊ฒ์ ๋ฆฌ์์ค๊ฐ ๋ค๋ฅด๋ค๋ ๊ฒ์ด๊ณ , ์ญ์ผ๋ก ๋ฆฌ์์ค๊ฐ ๋ค๋ฅด๋ฉด URI๋ ๋ฌ๋ผ์ ธ์ผ ํ๋ค.
REST API๋ ๋ถ๋ช ํ URI๋ฅผ ๋ง๋ค์ด ํต์ ์ ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ํผ๋์ ์ฃผ์ง ์๋๋ก URI ๊ฒฝ๋ก์ ๋ง์ง๋ง์๋ ์ฌ๋์(
/
)๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค.
Ex) http://restapi.example.com/houses/apartments/ (X)ํ์ดํ(
-
)์ URI ๊ฐ๋ ์ฑ์ ๋์ด๋๋ฐ ์ฌ์ฉ ๐ ๋ถ๊ฐํผํ๊ฒ ๊ธด URI๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ค๋ฉด ํ์ดํ์ ์ฌ์ฉํด ๊ฐ๋ ์ฑ์ ๋์ธ๋ค.๋ฐ์ค(
_
)์ URI์ ์ฌ์ฉํ์ง ์๋๋ค. ๐ ๋ฐ์ค์ ๋ณด๊ธฐ ์ด๋ ต๊ฑฐ๋ ๋ฐ์ค ๋๋ฌธ์ ๋ฌธ์๊ฐ ๊ฐ๋ ค์ง๊ธฐ๋ ํ๋ฏ๋ก ๊ฐ๋ ์ฑ์ ์ํด ๋ฐ์ค์ ์ฌ์ฉํ์ง ์๋๋ค.URI ๊ฒฝ๋ก์๋ ์๋ฌธ์๊ฐ ์ ํฉํ๋ค. ๐ URI ๊ฒฝ๋ก์ ๋๋ฌธ์ ์ฌ์ฉ์ ํผํ๋๋ก ํ๋ค.
(RFC 3986(URI ๋ฌธ๋ฒ ํ์)์ URI ์คํค๋ง์ ํธ์คํธ๋ฅผ ์ ์ธํ๊ณ ๋ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ณํ๋๋ก ๊ท์ ํ๊ธฐ ๋๋ฌธ)ํ์ผํ์ฅ์๋ URI์ ํฌํจํ์ง ์๋๋ค. ๐ REST API์์๋ ๋ฉ์์ง ๋ฐ๋ ๋ด์ฉ์ ํฌ๋งท์ ๋ํ๋ด๊ธฐ ์ํ ํ์ผ ํ์ฅ์๋ฅผ URI ์์ ํฌํจ์ํค์ง ์๋๋ค.
Accept header๋ฅผ ์ฌ์ฉํ๋ค.
Ex) http://restapi.example.com/members/soccer/345/photo.jpg (X)
Ex) GET / members/soccer/345/photo HTTP/1.1 Host: restapi.example.com Accept: image/jpg (O)๋ฆฌ์์ค ๊ฐ์๋ ์ฐ๊ด ๊ด๊ณ๊ฐ ์๋ ๊ฒฝ์ฐ
/๋ฆฌ์์ค๋ช /๋ฆฌ์์ค ID/๊ด๊ณ๊ฐ ์๋ ๋ค๋ฅธ ๋ฆฌ์์ค๋ช
Ex) GET : /users/{userid}/devices (์ผ๋ฐ์ ์ผ๋ก ์์ โhasโ์ ๊ด๊ณ๋ฅผ ํํํ ๋)
REST API ์ค๊ณ ์์
์ฐธ๊ณ ์๋ต์ํ์ฝ๋
1xx
: ์ ์ก ํ๋กํ ์ฝ ์์ค์ ์ ๋ณด ๊ตํ
2xx
: ํด๋ผ์ด์ธํธ ์์ฒญ์ด ์ฑ๊ณต์ ์ผ๋ก ์ํ๋จโจโจโจ
3xx
: ํด๋ผ์ด์ธํธ๋ ์์ฒญ์ ์๋ฃํ๊ธฐ ์ํด ์ถ๊ฐ์ ์ธ ํ๋์ ์ทจํด์ผ ํจ
4xx
: ํด๋ผ์ด์ธํธ์ ์๋ชป๋ ์์ฒญ
5xx
: ์๋ฒ์ชฝ ์ค๋ฅ๋ก ์ธํ ์ํ์ฝ๋
RESTful์ ๊ฐ๋
ํ์(๊ท์น, rule)
๋ฆฌ์์ค
๋ฅผ ์ด๋ป๊ฒ ํ๋ค(HTTP Method + Payload)"๋ฅผ ๊ตฌ์กฐ์ ์ผ๋ก ํํ.1) URI ์ ๋ณด๋ฅผ ๋ช ํํ๊ฒ ํํํด์ผ ํ๋ค.
๋ช
์ฌ
๋ฅผ ์ฌ์ฉํ๋ค.๋์ฌ
๋ ์ ๋ ์ฌ์ฉํ์ง ์๋๋ค ๐ HTTP Method์๋ง ๋์ฌ ์ฌ์ฉ)2) resource์ ๋ํ
ํ์
(๋์ฌ)๋ฅผ HTTP Method(GET, POST, PUT, DELETE)๋ก ํํํ๋ค.
URI์ HTTP Method๊ฐ ํฌํจ๋์๋ ์๋๋ค.
ex) GET delete /user /1 (โ)
ex) DELETE /user /1 (โญ)
URI์ ๋์ฌ๊ฐ ํฌํจ๋์๋ ์๋๋ค.
ex) GET /user /show /1 (โ)
ex) GET /user /1 (โญ)
ex) POST insert /user /2 (โ)
ex) POST /user /2 (โญ)
3) resource ์ฌ์ด์ ์ฐ๊ด ๊ด๊ณ๊ฐ ์๋ ๊ฒฝ์ฐ
/(์ฌ๋์)
๋ก ๋ถ์ฌ๋๊ฐ๋ค (๊ณ์ธต๊ด๊ณ)
/
๋ฅผ ํฌํจํ์ง ์๋๋ค.4) ํ์ผ์ ๊ฒฝ์ฐ, payload์ ํฌ๋งท์ ๋ํ๋ด๊ธฐ ์ํ ํ์ผ ํ์ฅ์๋ฅผ URI์ ํฌํจ์ํค์ง ์๋๋ค.
ex) GET user/1/profile-photo.jpg (โ)
ex) GET user/1/profile-photo (โญ)
200 OK / [SUCCESS]
๐ GET(๋ฆฌ์์ค๋ฐํ), PUT & PATCH(์ํ ๋ฉ์์ง ๋๋ ๋ฆฌ์์ค ๋ฐํ)
201 Created / [SUCCESS]
๐ POST(์ํ๋ฉ์์ง ๋๋ ์๋ก ์์ฑ๋ ๋ฆฌ์์ค ๋ฐํ)
204 No Content / [SUCCESS]
๐ DELETE(์ฑ๊ณต์ ์ผ๋ก ์ญ์ ๋ ์์ฒญ์ ์๋ต)
400 Bad Request / [FAILURE]
๐ All(์์ฒญ์ ์๋ชป๋ ๊ฐ๋ค์ด ํฌํจ๋จ - ์ ํ๋ฒํธ์ ๊ธ์๊ฐ ํฌํจ๋ ๊ฒฝ์ฐ)
401 Unauthorized / [FAILURE]
๐ ALL(์ธ์ฆ์ ์์ฒญ ํ์ผ๋ ์ฌ์ฉ์๊ฐ ์ธ์ฆ ์๊ฑด์ ์ถฉ์กฑํ์ง ๋ชปํจ - ๋ก๊ทธ์ธ์ด ํ์ํ ๊ฒฝ์ฐ)
403 Forbidden / [FAILURE]
๐ ALL(์ฌ์ฉ์๊ฐ ํ์ฉ๋์ง ์์ ์ฝํ
์ธ ๋ก ์ ๊ทผ์ ์๋ํจ - ๋น์ฉ์ ์ง๋ถํ ์ฌ์ฉ์๊ฐ ์๋ ๊ฒฝ์ฐ)
404 Not Found / [FAILURE]
๐ ALL(๋ฆฌ์์ค ์์)
405 Method Not Allowed / [FAILURE]
๐ ALL(ํ๊ฐ๋์ง ์์ HTTP Method๋ก ์๋๋จ)
500
๐ ์๋ฒ์ธก ์ค๋ฅ