๋ณดํต api๋ฅผ ํ์ฉํ์ฌ CRUD๋ฅผ ์ด์ฉํ๋ ค๋ฉด, ๋ฐฑ์๋๋ฅผ ๋ผ๊ณ ์์
ํ๊ธฐ ๋ง๋ จ์ด๋ค. ๊ทธ๋ฐ๋ฐ Axios
๋ก ํ๋ CRUD๋ฅผ ํ๋ก ํธ ๋จ์์ ์ฐ์ตํ ์๋ ์์๊น?
๋ฐฑ์๋ ๋ถ๋ค์ด ๋ง๋ค์ด์ฃผ์ api.. ํจ๋ถ๋ก ๋ด axios์ ์ฐ์ต์ฅ์ผ๋ก ์ฌ์ฉํ๊ธฐ ๋๋ ต๋ค๋ฉด? json-server
๋ฅผ ์ด์ฉํ์!
json-server
๋ ์ ๋ง ๊ฐ๋จํ๊ฒ json ํ์ผ์ ํํ๋ก DB์ API์๋ฒ๋ฅผ ์์ฑํด์ฃผ๋ ํจํค์ง
์ด๋ค. ์์์ ๋งํ๋ฏ์ด Axios๋ฅผ ํ๋ฒ ์ฐ์ตํด๋ณด๋ ค๊ณ ์ฌ์ฉํด๋ ๋๋๋ฐ, ์๋ ์ฌ์ฉ ๋ชฉ์ ์ BE์์ ์ค์ DB์ API ์๋ฒ๊ฐ ๊ตฌ์ถ๋๊ธฐ ์ ๊น์ง FE ๊ฐ๋ฐ์ ์์์ ์ผ๋ก ์ฌ์ฉํ mock data๋ฅผ ์์ฑํ๊ธฐ ์ํจ์ด๋ผ๊ณ ํ๋ค.
๊ทธ๋ ๊ฒ ๋๋ฉด json-server๋ฅผ ํตํด์ FE์์๋ BE๊ฐ ํ๊ณ ์๋ ์์
์ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ , FE์ ๋ก์ง๊ณผ ํ๋ฉด์ ๊ตฌํ ํ ์ ์์ด ํจ์จ์ ์ผ๋ก ํ์
์ ํ ์ ์๋ ๊ธฐ๋๋ฅผ ํ ์ ์๊ฒ ๋๋ค.
ํ๋ฒ ๊ฐ์ด ์ค์น ๋ฐ ์ด๋ป๊ฒ ๊ตด๋ฌ๊ฐ๋์ง ๋ง์ด๋ผ๋ ๋ณด์~ ๋ ์ธ ๊ณ
npm install 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 ๋์ ์ ๋ ฅํด๋ ์ ์์ ์ผ๋ก ์๋๋๋ค. ์ด ์๋ฆฌ๋ผ๋ฉด)
์์ ๋ช
๋ น์ด์ db.json
์ด๋ผ๋ ๊ฑด db๋ผ๋ ์ด๋ฆ์ json ํ์ผ์ ๋ง๋ค๊ฒ ๋ค๋ ๊ฒ์ด๋ค. ์ฐ๋ฆฌ๊ฐ ์ํ๋ ์ด๋ฆ์ json ํ์ผ๋ก ๋ง๋ค๋ ค๋ฉด db๋ฅผ ๋ค๋ฅธ ๋ง๋ก ๊ณ ์น๋ฉด ๋๋ค.
๋ง์ฝ ๋ด๊ฐ todo ๋ผ๋ ๊ฐ์ฒด ๋ฐฐ์ด์ ๋ง๋ค์ด์ ๊ฑฐ๊ธฐ์ CRUD๋ฅผ ๊ตฌํํด๋ณด๊ณ ์ถ๋ค..!
๊ทธ๋ ๋ค๋ฉด ํด๋น json ํ์ผ์ ์ด๊ธฐ๊ฐ, ์ฆ initial state ๊ฐ์ ๋ง๋ค์ด ์ฃผ๋ฉด ๋๋ค.
{
"todos": [
{
"id": 1,
"title": "json-server",
"content": "json-server๋ฅผ ๋ฐฐ์๋ด
์๋ค."
}
]
}
๊ทธ๋ผ ์ด์ ํด๋น ๋ฐ์ดํฐ์ ์ ๊ทผํ์ฌ todos.id
๋ฑ์ ๋ฐฉ๋ฒ์ผ๋ก ํน์ ์์๋ฅผ ๋ค๋ฃฐ ์ ์๊ฒ๋๋ค.