๊ด€๋ฆฌ ๋ฉ”๋‰ด

C-log

[FE] json-server๋ฅผ ํ†ตํ•ด ์ž„์‹œ API๋ฅผ ๊ฐ€์ง€๊ณ  ๋ฌธ์ œ๋“ค์„ ์ถœ๋ ฅํ•œ๋‹ค. ๋ณธ๋ฌธ

๐Ÿ’ป๊ฐœ๋ฐœ ๋…ธํŠธ/๋‚˜๋งŒ์˜ ์‹œํ—˜์ง€

[FE] json-server๋ฅผ ํ†ตํ•ด ์ž„์‹œ API๋ฅผ ๊ฐ€์ง€๊ณ  ๋ฌธ์ œ๋“ค์„ ์ถœ๋ ฅํ•œ๋‹ค.

4:Bee 2024. 2. 6. 16:29
728x90
 

[FE] json-server๋ฅผ ํ†ตํ•ด ์ž„์‹œ API๋ฅผ ๊ฐ€์ง€๊ณ  ๋ฌธ์ œ๋“ค์„ ์ถœ๋ ฅํ•œ๋‹ค. by 4BFC · Pull Request #4 · 4BFC/sample_Capstone

ํ™•์ธ ์‹œ json-server ์„ค์น˜ ์š”๋ง

github.com

๋‚˜๋งŒ์˜ ์‹œํ—˜์ง€๋ฅผ ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ๋Š” ํŽ˜์ด์ง€๋ฅผ ์ œ์ž‘ ์ค‘์ด๋‹ค. ๋ฐฑ์—”๋“œ์—์„œ ์ œ์ž‘ํ•œ sample jsonํŒŒ์ผ์„ ๊ฐ€์ง€๊ณ  ์‹œํ—˜์ง€์— ๋“ค์–ด๊ฐˆ ๋ฌธ์ œ๋“ค์„ ํ˜ธ์ถœํ•ด ๋ณผ ๊ฒƒ์ด๋‹ค. API๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ์œ„ํ•ด์„  ์šฐ์„  fetch์™€ useEffect๋ฅผ ์•Œ์•„์•ผํ•˜๊ณ  ์ด๋ฅผ ํ™œ์šฉํ•ด์„œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๊ฒƒ์ด๋‹ค. ์•„์ง API๊ฐ€ ์ •์‹์œผ๋กœ ๋ฐฐํฌ๊ฐ€ ๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ž„์‹œ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” json-server๋ฅผ ๊ฐ€์ง€๊ณ  ์ž„์‹œ์ฃผ์†Œ๋กœ API๋ฅผ ํ˜ธ์ถœํ•  ๊ฒƒ์ด๋‹ค. ๋ฌธ์ œ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ฐœ์ˆ˜ ์ œํ•œ์€ ๋‹ค์Œ ์ด์Šˆ์— ๋‹ค๋ฃจ์–ด ๋ณผ ๊ฒƒ์ด๋‹ค. ์šฐ์„  ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด์ž.

import React, { useState, useEffect } from "react";
import { Link } from "react-router-dom";

export default function Sub_Lab() {
  const [data, setData] = useState([]);

  useEffect(() => {
    fetch('http://localhost:3001/sample')
      .then(res => res.json())
      .then((data) => {
        setData(data); // slice๋ฅผ ํ†ตํ•ด์„œ 10๊ฐœ์˜ ์•„์ดํ…œ๋งŒ ๊ฐ€์ ธ์˜ฌ ๊ฒƒ
      })
      .catch((error) => {
        console.error("Error fetching data:", error);
      });
  }, []);

  return (
    <div>
      <h2>Test</h2>
      <Link to="/">back</Link>
      <ol>
        {data.map((data) => (
          <li key={data.id}><p>{data.question}</p>{data.options}</li>
        ))}
      </ol>
    </div>
  );
}

API๋ฅผ React์—์„œ ๋ถˆ๋Ÿฌ์˜ค๋Š” ์•„์ฃผ ๊ธฐ๋ณธ ์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ useEffect์™€ fetch๋ฅผ ์‚ฌ์šฉํ•ด์„œ API๋ฅผ ๊ฐ€์ง€๊ณ  ์™”๋‹ค. ์ด์ œ ํ•„ํ„ฐ๊ฐ€ ์ ์šฉ๋˜๋Š” ์ฒซ ๋ฒˆ์งธ ํŽ˜์ด์ง€์—์„œ ํ•„ํ„ฐ๋œ ๊ฐ’์„ ์–ด๋–ป๊ฒŒ ๋ฐ›๋Š”์ง€์— ๋”ฐ๋ผ์„œ ํ•ด๋‹น ๋ฌธ์ œ์ง€๊ฐ€ ๋ณ€๊ฒฝ์ด ๋˜์–ด์•ผํ•œ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์šฐ๋ฆฌ๋Š” ๊ณ ๋ฏผ์„ ํ•ด๋ณผ ํ•„์š”๊ฐ€ ์žˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ํŽ˜์ด์ง€์—์„œ๋Š” ์–ด๋–ป๊ฒŒ ํ•ด๋‹น ๊ฐ’์„ ๋„˜๊ฒจ์™€์„œ ๋‘ ๋ฒˆ์งธ ํŽ˜์ด์ง€์—์„œ ๊ฐ’์„ ์ ์šฉํ• ์ง€ ๋ง์ด๋‹ค. ๊ทธ๋Ÿฌ๊ธฐ ์œ„ํ•ด์„  Web Storage์™€ Cache์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ์ด ๋ถ€๋ถ„์— ๋Œ€ํ•œ ๊ฐœ๋…์€ ํšŒ์˜ ์ž๋ฃŒ๋ฅผ ์—…๋กœ๋“œํ•˜๋Š” notion์— ๋”ฐ๋กœ ์ ์–ด ๋ณผ ๊ฒƒ์ด๋‹ค. ๊ธฐํšŒ๊ฐ€ ๋œ๋‹ค๋ฉด ํ•ด๋‹น ๊ฐœ๋…์„ ๋”ฐ๋กœ ํฌ์ŠคํŒ…ํ•ด ๋ณด๊ฒ ๋‹ค.

json-server ./src/db/driver_test.json --port 3001
728x90
Comments