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๋‹จ๊ณ„ ๋ ˆ๋ฒจ

  1. ๋ ˆ๋ฒจ 0: Swamp of POX (Plain Old XML)

    • REST API ์›์น™์„ ๋”ฐ๋ฅด์ง€์•Š๋Š” ๋‹จ๊ณ„

    • ๋ฐ์ดํ„ฐ๋Š” XML ํฌ๋ฉง์œผ๋กœ ์ „์†ก๋˜๋ฉฐ, ๋ฆฌ์†Œ์Šค๋ฅผ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•œ URI ํŒจํ„ด์ด ์—†์Œ

  2. ๋ ˆ๋ฒจ 1: Resources

    • URI์— ๋ฆฌ์†Œ์Šค๋ฅผ ๋ช…์‹œํ•จ

    • ์•„์ง ์ž์›์— ๋Œ€ํ•œ ํ–‰์œ„์ธ CRUD ์ž‘์—…์„ ์ •์˜ํ•˜์ง€ ์•Š์Œ

  3. ๋ ˆ๋ฒจ 2: HTTP Verbs

    • HTTP ๋ฉ”์„œ๋“œ(GET, POST, PUT/PATCH, DELETE)๋ฅผ ํ†ตํ•ด CRUD ์ž‘์—…์„ ๋ช…์‹œํ•จ

  4. ๋ ˆ๋ฒจ 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