HTTP์ URI ๊ธฐ๋ฐ์ผ๋ก ์์์ ์ ๊ทผํ ์ ์๋๋ก ์ ๊ณตํ๋ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ์ธํฐํ์ด์ค์ด๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ๊ฐ๋ฐ์๋ HTTP ๋ฉ์๋์ URI ๋ง์ผ๋ก ์ธํฐ๋ท์ ์๋ฃ๋ฅผ CRUD ํ ์ ์๋ค.
'REST API'๋ฅผ ์ ๊ณตํ๋ ์น ์๋น์ค๋ฅผ 'RESTful' ํ๋ค๊ณ ํ ์ ์๋ค.
RESTful์ REST๋ฅผ REST ๋ต๊ฒ ์ฐ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ผ๋ก, ๋๊ตฐ๊ฐ๊ฐ ๊ณต์์ ์ผ๋ก ๋ฐํํ ๊ฒ์ ์๋๋ค.
1. ์์์ ์๋ณํ ์ ์์ด์ผ ํ๋ค.
2. ํ์๋ ๋ช ์์ ์ด์ด์ผ ํ๋ค.
3. ์๊ธฐ์์ ์ ์ด์ด์ผ ํ๋ค.
4. HATEOS(Hypermedia as the Engine of Application State)
์์(resource)์ ์ด๋ฆ(์์์ ํํ: representation)์ผ๋ก ๊ตฌ๋ถํ์ฌ ํด๋น ์์์ ์ํ(์ ๋ณด)๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ชจ๋ ๊ฒ
์๋ ์์ด๋ ์น(www)๊ณผ ๊ฐ์ ๋ถ์ฐ ํ์ดํผ๋ฏธ๋์ด ์์คํ ์ ์ํ ์ํํธ์จ์ด ๊ฐ๋ฐ ์ํคํ ์ฒ์ ํ ํ์์ด๋ค.
REST๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์น์ ๊ธฐ์กด ๊ธฐ์ ๊ณผ HTTP ํ๋กํ ์ฝ์ ๊ทธ๋๋ก ํ์ฉํ๊ธฐ ๋๋ฌธ์ ์น์ ์ฅ์ ์ ์ต๋ํ ํ์ฉํ ์ ์๋ ์ํํธ์จ์ด ํ๋ก๊ทธ๋จ ์ํคํ ์ฒ ์คํ์ผ์ด๋ค.
HTTP URI๋ฅผ ํตํด ์์์ ๋ช ์ํ๊ณ ,
HTTP Method (POST, GET, PUT, DELETE)๋ฅผ ํตํด ํด๋น ์์์ ๋ํ CRUD OPERATION์ ์ ์ฉํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
์ฆ, REST๋ ์์ ๊ธฐ๋ฐ์ ๊ตฌ์กฐ (ROA: Resource Oriented Architecture) ์ค๊ณ์ ์ค์ฌ์ Resoure๊ฐ ์๊ณ HTTP Method๋ฅผ ํตํด Resource๋ฅผ ์ฒ๋ฆฌํ๋๋ก ์ค๊ณ๋ ์ํคํ ์ณ๋ฅผ ์๋ฏธํ๋ค.
์น์ ๋ชจ๋ ์์์ ๊ณ ์ ํ ID์ธ HTTP URI ๋ฅผ ๋ถ์ฌํ๋ค.
1. ์์(Resource) - URL
ํ์(Verb) - Http Method
ํํ(Representations)
์์ (Resource) URL
๋ชจ๋ ์์์ ๊ณ ์ ํ ID๊ฐ ์กด์ฌํ๊ณ , ์ด ์์์ Server์ ์กด์ฌํ๋ค.
์์์ ๊ตฌ๋ณํ๋ ID๋ /orders/order_id/1 ์ ๊ฐ์ HTTP URI ์ด๋ค.
2. ํ์ (Verb) - Http Method
HTTP ํ๋กํ ์ฝ์ Method๋ฅผ ์ฌ์ฉํ๋ค.
HTTP ํ๋กํ ์ฝ์ GET, POST, PUT, DELETE์ ๊ฐ์ ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ค.
3. ํํ (Representaion of Resource)
Client๊ฐ ์์์ ์ํ (์ ๋ณด)์ ๋ํ ์กฐ์์ ์์ฒญํ๋ฉด Server๋ ์ด์ ์ ์ ํ ์๋ต (Representation)์ ๋ณด๋ธ๋ค
REST์์ ํ๋์ ์์์ JSON, XML, TEXT, RSS ๋ฑ ์ฌ๋ฌ ํํ์ Representation์ผ๋ก ๋ํ๋ผ ์ ์๋ค.
ํ์ฌ๋ JSON์ผ๋ก ์ฃผ๊ณ ๋ฐ๋ ๊ฒ์ด ๋๋ถ๋ถ์ด๋ค.
ํ๋ก์ ํธ์ ์ ๋ณด๋ฅผ ์ ์ํ๊ณ , ์์กดํ๋ ํจํค์ง ๋ฒ์ ์ ๋ณด๋ฅผ ๋ช ์ํ๋ ํ์ผ์ด๋ค.
์ผ๋ฐ์ ์ผ๋ก ๋ฃจํธ ๋๋ ํ ๋ฆฌ์ ์์นํ๋ค.
์์ฑ๋๋ ์ ๋ณด๋ฅผ ํฌ๊ฒ 2๊ฐ๋ก ๋๋๋ฉด ํ๋ก์ ํธ ์ ๋ณด, ํจํค์ง ์ ๋ณด๋ก ๋๋ ์ ์๋ค.
package.json ํ์ผ์ ๋ฐ๋์ name๊ณผ version ํญ๋ชฉ์ ํฌํจํด์ผํฉ๋๋ค.
name: ์๋ฌธ์ ํ ๋จ์ด๋ก ์ด๋ฃจ์ด์ ธ์ผํ๋ค.
๊ทธ๋ฆฌ๊ณ ํ์ดํ( - )๊ณผ ์ธ๋์ค์ฝ์ด( _ )๊ฐ ํฌํจ๋ ์ ์๋ค.
versoin: x.x.x ํ์์ ๋ฐ๋ผ์ผ ํ๋ฉฐ, ์์ฑ ๊ท์น์ ์๋งจํฑ ๋ฒ์ ๋์ด๋ผ๊ณ ํ๋ค.
ํจํค์ง ์ ๋ณด๋ dependencies ๋๋ devDependencies์ ์์ฑ๋๋ค.