REST / HTTP
REST
-
Representational State Transfer
-
๋ฐ์ดํฐ๊ฐ ์์ฒญ๋์ด์ง๋ ์์ ์์ ์์์ ์ํ(์ ๋ณด)๋ฅผ ์ ๋ฌ
-
JSON ํน์ XML์ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ฒ์ด ์ผ๋ฐ์
-
-
Client, Server : ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ์๋ก ๋ ๋ฆฝ์ ์ผ๋ก ๋ถ๋ฆฌ ๋์ด ์์ด์ผ ํจ
-
Stateless : ์์ฒญ์ ๋ํด ํด๋ผ์ด์ธํธ์ ์ํ๋ฅผ ์๋ฒ์ ์ ์ฅํ์ง ์์์ผ ํจ
-
Cache : ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ ์๋ต์ Cache(์์์ ์ฅ)ํ ์ ์์ด์ผ ํจ / ํด๋ผ์ด์ธํธ๊ฐ Cache๋ฅผ ํตํด์ ์๋ต์ ์ฌ์ฌ์ฉํ ์ ์์ด์ผ ํ๋ฉฐ, ์ด๋ฅผ ํตํด์ ์๋ฒ์ ๋ถํ๋ฅผ ๋ฎ์ถค
-
Layered System(๊ณ์ธตํ) : ์๋ฒ์ ํด๋ผ์ด์ธํธ ์ฌ์ด์ ๋ฐฉํ๋ฒฝ, ๊ฒ์ดํธ์จ์ด, Proxy ๋ฑ ๋ค์ํ ๊ณ์ธต ํํ๋ก ๊ตฌ์ฑ์ด ๊ฐ๋ฅํด์ผ ํ๋ฉฐ, ์ด๋ฅผ ํ์ฅ ํ ์ ์์ด์ผ ํจ
-
์ธํฐํ์ด์ค ์ผ๊ด์ฑ : ์ธํฐํ์ด์ค์ ์ผ๊ด์ฑ์ ์งํค๊ณ , ์ํคํ ์ฒ๋ฅผ ๋จ์ํ์์ผ ์์ ๋จ์๋ก ๋ถ๋ฆฌํ์ฌ, ํด๋ผ์ด์ธํธ, ์๋ฒ๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ๊ฐ์ ๋ ์ ์์ด์ผ ํจ
-
Code on Demand (optional) : ์๋ฐ์คํฌ๋ฆฝํธ ๋ฑ ํน์ ํ ๊ธฐ๋ฅ์ ์๋ฒ๋ก๋ถํฐ ํด๋ผ์ด์ธํธ๊ฐ ์ ๋ฌ๋ฐ์ ์ฝ๋๋ฅผ ์คํํ ์ ์์ด์ผ ํจ
-
์ธํฐํ์ด์ค ์ผ๊ด์ฑ - REST๋ฅผ ์ ์ฌ์ฉํ๋์ง ํ๋จํ๊ธฐ
-
์๋ ์กฐ๊ฑด๋ค์ ์ ๊ฐ์ถ ๊ฒฝ์ฐ Restful ํ๋ค๊ณ ํํ, ์ด๋ฅผ REST API๋ผ๊ณ ๋ถ๋ฆ
-
์์์ ์๋ณ
-
์น ๊ธฐ๋ฐ์ REST์์๋ ๋ฆฌ์์ค ์ ๊ทผ์ ํ ๋ URI ์ฌ์ฉ
-
https://abcd.co.kr/user/100
-
Resource : user
-
์๋ณ์ : 100
-
-
-
-
๋ฉ์์ง๋ฅผ ํตํ ๋ฆฌ์์ค ์กฐ์
-
Web์์๋ HTML, XML, JSON, TEXT ๋ฑ ๋ค์ํ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ ์ ๋ฌ
-
์ด๋ ํ ํ์ ์ ๋ฐ์ดํฐ์ธ์ง๋ฅผ ์๋ ค์ฃผ๊ธฐ ์ํด HTTP Header ๋ถ๋ถ์ content-type์ ํตํด ๋ฐ์ดํฐ ํ์ ์ง์ ํ ์ ์์
-
๋ฆฌ์์ค ์กฐ์์ ์ํด ๋ฐ์ดํฐ ์ ์ฒด ์ ๋ฌ X, ๋ฉ์์ง๋ก ์ ๋ฌ
-
-
์๊ธฐ ์์ ์ ๋ฉ์์ง
-
์์ฒญํ๋ ๋ฐ์ดํฐ๊ฐ ์ด๋ป๊ฒ ์ฒ๋ฆฌ ๋์ด์ ธ์ผ ํ๋์ง ์ถฉ๋ถํ ๋ฐ์ดํฐ๋ฅผ ํฌํจ ํ ์ ์์ด์ผ ํจ
-
HTTP ๊ธฐ๋ฐ์ REST ์์๋ HTTP Method์ Header ์ ๋ณด, URI์ ํฌํจ๋๋ ์ ๋ณด๋ก ํํ ๊ฐ๋ฅ
-
-
Application ์ํ์ ๋ํ ์์ง์ผ๋ก์จ ํ์ดํผ๋ฏธ๋์ด
- REST API๋ฅผ ๊ฐ๋ฐํ ๋ ๋จ์ํ Client ์์ฒญ์ ๋ํ ๋ฐ์ดํฐ๋ง ์๋ต ํด์ฃผ๋ ๊ฒ์ด ์๋ ๊ด๋ จ๋ ๋ฆฌ์์ค์ ๋ํ Link ์ ๋ณด๊น์ง ๊ฐ์ด ํฌํจ ๋์ด์ ธ์ผ ํจ
HTTP ์์ฒญ ๋ฉ์๋
-
๋์ผํ ์์ฒญ์ ํ ๋ฒ ๋ณด๋ด๋ ๊ฒ๊ณผ ์ฌ๋ฌ ๋ฒ ์ฐ์์ผ๋ก ๋ณด๋ด๋ ๊ฒ์ด ๊ฐ์ ํจ๊ณผ๋ฅผ ์ง๋๊ณ , ์๋ฒ์ ์ํ๋ ๋์ผํ๊ฒ ๋จ์ ๋, ํด๋น HTTP ๋ฉ์๋๊ฐ ๋ฉฑ๋ฑ์ฑ์ ๊ฐ์ก๋ค๊ณ ํ๋ค
-
GET : ์ฌ์ฉ์์ ์ ๋ณด ์์ฒญ
-
POST : ์ฌ์ฉ์ ์ ๋ณด ์์ฑ
-
PUT : ์ฌ์ฉ์ ์ ๋ณด ์์ฑ ๋ฐ ์์
-
DELETE : ์ฌ์ฉ์ ์ ๋ณด ์ญ์
HTTP Status Code
-
์๋ต์ ์ํ๋ฅผ ๋ํ๋ด๋ ์ฝ๋
-
1XX
-
์๋ฏธ : ์ฒ๋ฆฌ์ค
-
์ฒ๋ฆฌ๊ฐ ๊ณ์ ๋๊ณ ์๋ ์ํ, ํด๋ผ์ด์ธํธ๋ ์์ฒญ์ ๊ณ์ ํ๊ฑฐ๋ ์๋ฒ์ ์ง์์ ๋ฐ๋ผ ์ฌ์์ฒญ
-
-
2XX
-
์๋ฏธ : ์ฑ๊ณต
-
์์ฒญ์ ์ฑ๊ณต
-
-
3XX
-
์๋ฏธ : ๋ฆฌ๋ค์ด๋ ํธ
-
๋ค๋ฅธ ๋ฆฌ์์ค๋ก ๋ฆฌ๋ค์ด๋ ํธ, ํด๋น ์ฝ๋๋ฅผ ๋ฐ์์ ๋๋ Response์ ์๋ก์ด ์ฃผ์๋ก ๋ค์ ์์ฒญ
-
-
4XX
-
์๋ฏธ : ํด๋ผ์ด์ธํธ ์๋ฌ
-
ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์๋ฌ๊ฐ ์๋ ์ํ, ์ฌ์ ์ก ํด๋ ์๋ฌ๊ฐ ํด๊ฒฐ๋์ง ์์
-
-
5XX
-
์๋ฏธ : ์๋ฒ์๋ฌ
-
์๋ฒ ์ฒ๋ฆฌ ์ค ์๋ฌ๊ฐ ๋ฐ์ํ ์ํ, ์ฌ ์ ์ก์ ์๋ฌ๊ฐ ํด๊ฒฐ ๋์์ ์๋ ์์
-
-
-
์์ฃผ ์ฌ์ฉ๋๋ ์ฝ๋๋ค
-
200 : ์ฑ๊ณต
-
201 : ์ฑ๊ณต, ๋ฆฌ์์ค ์์ฑ ์ฑ๊ณต
-
301 : ๋ฆฌ๋ค์ด๋ ํธ, ๋ฆฌ์์ค๊ฐ ๋ค๋ฅธ ์ฅ์๋ก ๋ณ๊ฒฝ๋จ์ ์๋ฆผ
-
303 : ๋ฆฌ๋ค์ด๋ ํธ, Client์์ ์๋์ผ๋ก ์๋ก์ด ๋ฆฌ์์ค๋ก ์์ฒญ ์ฒ๋ฆฌ
-
400 : ์์ฒญ ์ค๋ฅ, ํ๋ผ๋ฏธํฐ ์๋ฌ
-
401 : ๊ถํ ์์ (์ธ์ฆ์คํจ)
-
404 : ๋ฆฌ์์ค ์์ (ํ์ด์ง๋ฅผ ์ฐพ์ ์ ์์)
-
500 : ์๋ฒ ๋ด๋ถ ์๋ฌ (์๋ฒ ๋์ ์ฒ๋ฆฌ ์๋ฌ)
-
503 : ์๋น์ ์ ์ง (์ ๊ฒ ๋ฑ)
-