1. Express
keyword
Express๋?
REST API
HTTP Method(CRUD)
URL ๊ตฌ์กฐ
Express๋?
Express๋ ์น ์ฑ์ ์ํ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๊ฐ๊ฒฐํ๊ณ ์ ์ฐํ Node.js ์น ์ฑ ํ๋ ์์ํฌ๋ค.
๋ผ์ฐํ : HTTP ์์ฒญ๊ณผ ์์ฒญ ์ฒ๋ฆฌ ๋ก์ง์ ์ฐ๊ฒฐํ๋ ๋ผ์ฐํ ๊ธฐ๋ฅ ์ ๊ณต (ex. app.get(), app.post(), app.patch(), app.delete())
๋ฏธ๋ค์จ์ด: ์์ฒญ๊ณผ ์๋ต ์ฌ์ด์ ์ค๊ฐ์์ ๋ก๊น , ๋ฐ์ดํฐ ๋ณํ, ์ธ์ฆ ๋ฑ์ ์์ ์ ์ฒ๋ฆฌํ ์ ์๋ค. (ex. app.use())
REST API
REST API๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ์ํ ํต์ ์ํคํ ์ฒ๋ก ๋ฆฌ์์ค๋ฅผ ์๋ณํ๊ธฐ ์ํด URI์ ๋ช ์ํ๊ณ , HTTP Method๋ฅผ ํตํด ์์์ ๋ํ CRUD ์์ ์ ์ ์ํ๋ค.
๋ก์ด ํ๋ฉ์ REST API ์ํคํ
์ฒ 4๋จ๊ณ ๋ ๋ฒจ
๋ ๋ฒจ 0: Swamp of POX (Plain Old XML)
REST API ์์น์ ๋ฐ๋ฅด์ง์๋ ๋จ๊ณ
๋ฐ์ดํฐ๋ XML ํฌ๋ฉง์ผ๋ก ์ ์ก๋๋ฉฐ, ๋ฆฌ์์ค๋ฅผ ์๋ณํ๊ธฐ ์ํ URI ํจํด์ด ์์
๋ ๋ฒจ 1: Resources
URI์ ๋ฆฌ์์ค๋ฅผ ๋ช ์ํจ
์์ง ์์์ ๋ํ ํ์์ธ CRUD ์์ ์ ์ ์ํ์ง ์์
๋ ๋ฒจ 2: HTTP Verbs
HTTP ๋ฉ์๋(GET, POST, PUT/PATCH, DELETE)๋ฅผ ํตํด CRUD ์์ ์ ๋ช ์ํจ
๋ ๋ฒจ 3: Hypermedia Controls
ํ์ดํผ๋ฏธ๋์ด ์ปจํธ๋กค์ ํด๋ผ์ด์ธํธ๊ฐ ๋งํฌ๋ฅผ ๋ฐ๋ผ๊ฐ๋ฉฐ API์ ์ํธ ์์ฉํ๊ณ , API ๋ณํ์ ์ ์ฐํ๊ฒ ๋์ํ ์ ์๋ค.
๋๊ฒ๋ ๋ ๋ฒจ 1์ URI ๋ฆฌ์์ค ๋ช ์์ ๋ ๋ฒจ 2์ HTTP Verbs๋ฅผ ๋์ ํ๋ ์์ค์ผ๋ก ์ฌ์ฉํ๋ค.
HTTP Method(CRUD)
ํด๋น ์์์ ๋ํ ์์ ๋ฐ ์ฒ๋ฆฌ(CRUD)๋ HTTP Method๋ฅผ ์ด์ฉํ๋ค.
URL ๊ตฌ์กฐ
์์ ์๋ณ์ ๋ช ์ฌ๋ก ํํํ๊ณ , ํด๋น ์์์ ๋ํ ์์ ๋ฐ ์ฒ๋ฆฌ(CRUD)๋ HTTP Method๋ฅผ ์ด์ฉํ๋ค. ์กฐํ ์์ ์ ๊ฒฝ์ฐ Collection(๋ณต์), item(๋จ์)๋ก ๋๋๋ค.
๊ธฐ๋ณธ ๋ฆฌ์์ค URL: /products
Read (๋ชฉ๋ก ์กฐํ = Collection) -> GET /products
Read (ํน์ ๋ฐ์ดํฐ ์กฐํ = Item) -> GET /products/{product_id}
Create (์ํ ์์ฑ ๋ฐ ์ถ๊ฐ, Collection Pattern ํ์ฉ) -> POST /products
Update (Item) -> PUT /products/{product_id}
Delete (Item) -> DELETE /products/{product_id}
Collection Pattern์ ํ์ฉํ๋ฉด ๋์ผ๋ช ์ ์๋ํฌ์ธํธ๋ก ์์์ ๋ํ ํ์(CRUD)๋ฅผ ์ ์ํ๋ฏ๋ก ์ผ๊ด์ ์ธ API๋ฅผ ์์ฑํ ์ ์๋ค.
PUT / PATCH
PUT์ ์กด์ฌํ์ง ์๋ ๋ฐ์ดํฐ์ ๋ํด์ ์๋ก ์์ฑํ๊ณ , ์กด์ฌํ๋ค๋ฉด ํด๋น ๋ ์ฝ๋ ์ ์ฒด๋ฅผ Overwirteํ๋ค. PATCH๋ ๋ ์ฝ๋์ ์ผ๋ถ ๋ฐ์ดํฐ๋ง ๋ณ๊ฒฝํ๋ Method์ด๋ค.
Last updated