๐Ÿ“† 22.10.14 - Json-server

๋ฒ„๋“คยท2022๋…„ 10์›” 14์ผ
0

โœจToday I Learn (TIL)

๋ชฉ๋ก ๋ณด๊ธฐ
8/58

๋ณดํ†ต api๋ฅผ ํ™œ์šฉํ•˜์—ฌ CRUD๋ฅผ ์ด์šฉํ•˜๋ ค๋ฉด, ๋ฐฑ์—”๋“œ๋ฅผ ๋ผ๊ณ  ์ž‘์—…ํ•˜๊ธฐ ๋งˆ๋ จ์ด๋‹ค. ๊ทธ๋Ÿฐ๋ฐ Axios๋กœ ํ•˜๋Š” CRUD๋ฅผ ํ”„๋ก ํŠธ ๋‹จ์—์„œ ์—ฐ์Šตํ•  ์ˆ˜๋Š” ์—†์„๊นŒ?


json-server

๋ฐฑ์—”๋“œ ๋ถ„๋“ค์ด ๋งŒ๋“ค์–ด์ฃผ์‹  api.. ํ•จ๋ถ€๋กœ ๋‚ด axios์˜ ์—ฐ์Šต์žฅ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ๋‘๋ ต๋‹ค๋ฉด? json-server๋ฅผ ์ด์šฉํ•˜์ž!

json-server๋Š” ์ •๋ง ๊ฐ„๋‹จํ•˜๊ฒŒ json ํŒŒ์ผ์˜ ํ˜•ํƒœ๋กœ DB์™€ API์„œ๋ฒ„๋ฅผ ์ƒ์„ฑํ•ด์ฃผ๋Š” ํŒจํ‚ค์ง€์ด๋‹ค. ์œ„์—์„œ ๋งํ–ˆ๋“ฏ์ด Axios๋ฅผ ํ•œ๋ฒˆ ์—ฐ์Šตํ•ด๋ณด๋ ค๊ณ  ์‚ฌ์šฉํ•ด๋„ ๋˜๋Š”๋ฐ, ์›๋ž˜ ์‚ฌ์šฉ ๋ชฉ์ ์€ BE์—์„œ ์‹ค์ œ DB์™€ API ์„œ๋ฒ„๊ฐ€ ๊ตฌ์ถ•๋˜๊ธฐ ์ „๊นŒ์ง€ FE ๊ฐœ๋ฐœ์— ์ž„์‹œ์ ์œผ๋กœ ์‚ฌ์šฉํ•  mock data๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•จ์ด๋ผ๊ณ  ํ•œ๋‹ค.
๊ทธ๋ ‡๊ฒŒ ๋˜๋ฉด json-server๋ฅผ ํ†ตํ•ด์„œ FE์—์„œ๋Š” BE๊ฐ€ ํ•˜๊ณ  ์žˆ๋Š” ์ž‘์—…์„ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ , FE์˜ ๋กœ์ง๊ณผ ํ™”๋ฉด์„ ๊ตฌํ˜„ ํ•  ์ˆ˜ ์žˆ์–ด ํšจ์œจ์ ์œผ๋กœ ํ˜‘์—…์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Œ€๋ฅผ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

ํ•œ๋ฒˆ ๊ฐ™์ด ์„ค์น˜ ๋ฐ ์–ด๋–ป๊ฒŒ ๊ตด๋Ÿฌ๊ฐ€๋Š”์ง€ ๋ง›์ด๋ผ๋„ ๋ณด์ž~ ๋ ˆ์ธ ๊ณ 

json-server install

npm install json-server
์ •๋ง ์งง๋””๋„ ์งง์€ ์ด ๋ช…๋ น์–ด๋กœ ์šฐ์„  json server๋ฅผ ์„ค์น˜ํ•ด ์ค€๋‹ค.

json server ์ผœ๊ธฐ

yarn json-server --watch db.json --port 3001
์œ„์˜ ๋ช…๋ น์–ด๋กœ json-server๋ฅผ ํ‚ค๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋’ค์— --port 3001์ด ์™œ ๋ถ™๋Š”์ง€ ๊ถ๊ธˆํ•˜์ง€ ์•Š๋Š”๊ฐ€? (๋‚˜๋งŒ ๊ถ๊ธˆํ•œ ๊ฑฐ์ผ์ง€๋„..)
์•„๋งˆ ์ •๋ง ๋†’์€ ํ™•๋ฅ ๋กœ ์ฝ”๋“œ๋ฅผ ๊ทธ๋Œ€๋กœ ์ง์—ญ์„ ํ•˜๋ฉด port ๋ฒˆํ˜ธ 3001๋ฒˆ์„ ์—ด๊ณ  ๊ฑฐ๊ธฐ์— json server๋ฅผ ์‚ฌ์šฉ์„ ํ•˜๊ฒŒ ํ•˜๊ธฐ์œ„ํ•˜์—ฌ ์ €๋ ‡๊ฒŒ ๋œ ๋“ฏํ•˜๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์™œ 3001 ์ด๋ƒ..! ์šฐ๋ฆฌ๊ฐ€ npm run start react ํด๋ผ์ด์–ธํŠธ ์„œ๋ฒ„๋ฅผ ์—ด๋ฉด ๋ช‡ ๋ฒˆ ํฌํŠธ์ธ์ง€ ๋ฐ”๋กœ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์•„๋ž˜์˜ ๊ทธ๋ฆผ์„ ์ž˜ ๋ณด๋ฉด ์„œ๋ฒ„ ์‹คํ–‰ ํ›„ ํ•ด๋‹น url๋กœ ํ™•์ธ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ธ€์ด ๋‚˜์˜ค๋Š” ๋ฐ ๋’ค์— 3000 ์ด๋ผ๊ณ  localhost๊ฐ€ ์กด์žฌํ•˜๋Š” ํฌํŠธ๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
ํฌํŠธ๋Š” ๊ฒน์น˜๋ฉด ์•ˆ๋˜๊ธฐ์— ๋’ค์— 3001 ์„ค์ •์„ ํ•œ ๊ฒƒ์ด๋‹ค.

(๋ฌผ๋ก  ์„œ๋ฒ„๊ฐ€ ์—†๋Š” port ๋ฒˆํ˜ธ๋ฅผ 3001 ๋Œ€์‹  ์ž…๋ ฅํ•ด๋„ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™๋œ๋‹ค. ์ด ์›๋ฆฌ๋ผ๋ฉด)

json ํŒŒ์ผ ์ˆ˜์ •ํ•˜๊ธฐ

์œ„์˜ ๋ช…๋ น์–ด์— db.json ์ด๋ผ๋Š” ๊ฑด db๋ผ๋Š” ์ด๋ฆ„์˜ json ํŒŒ์ผ์„ ๋งŒ๋“ค๊ฒ ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ์ด๋ฆ„์˜ json ํŒŒ์ผ๋กœ ๋งŒ๋“ค๋ ค๋ฉด db๋ฅผ ๋‹ค๋ฅธ ๋ง๋กœ ๊ณ ์น˜๋ฉด ๋œ๋‹ค.

๋งŒ์•ฝ ๋‚ด๊ฐ€ todo ๋ผ๋Š” ๊ฐ์ฒด ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด์„œ ๊ฑฐ๊ธฐ์— CRUD๋ฅผ ๊ตฌํ˜„ํ•ด๋ณด๊ณ  ์‹ถ๋‹ค..!
๊ทธ๋ ‡๋‹ค๋ฉด ํ•ด๋‹น json ํŒŒ์ผ์— ์ดˆ๊ธฐ๊ฐ’, ์ฆ‰ initial state ๊ฐ’์„ ๋งŒ๋“ค์–ด ์ฃผ๋ฉด ๋œ๋‹ค.

{
  "todos": [
    {
      "id": 1,
      "title": "json-server",
      "content": "json-server๋ฅผ ๋ฐฐ์›Œ๋ด…์‹œ๋‹ค."
    }
  ]
}

๊ทธ๋Ÿผ ์ด์ œ ํ•ด๋‹น ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜์—ฌ todos.id ๋“ฑ์˜ ๋ฐฉ๋ฒ•์œผ๋กœ ํŠน์ •์š”์†Œ๋ฅผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๊ฒŒ๋œ๋‹ค.

profile
ํƒœ์–ด๋‚œ ๊น€์— ๋งŽ์€ ๊ฒฝํ—˜์„ ํ•˜๋ ค๊ณ  ์•„๋“ฑ๋ฐ”๋“ฑ ์• ์“ฐ๋Š” ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž

0๊ฐœ์˜ ๋Œ“๊ธ€