Skip to content

Latest commit

ย 

History

History
70 lines (49 loc) ยท 1.49 KB

File metadata and controls

70 lines (49 loc) ยท 1.49 KB

API ์—ฐ๋™

$ npx create-react-app api-integrate
$ npm install axios

API JSONPlaceholder

axios

POST(๋ฐ์ดํ„ฐ ๋“ฑ๋ก) GET(๋ฐ์ดํ„ฐ ์กฐํšŒ) PUT(๋ฐ์ดํ„ฐ ์ˆ˜์ •) DELETE(๋ฐ์ดํ„ฐ ์‚ญ์ œ)๋“ฑ์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌํ•œ๋‹ค.

import axios from "axios";

axios.get("/users/1"); // ์—ฌ๊ธฐ

get์ด ์œ„์น˜ํ•œ ์ž๋ฆฌ์— ๋ฉ”์†Œ๋“œ ์ด๋ฆ„์„ ์†Œ๋ฌธ์ž๋กœ ๋„ฃ์œผ๋ฉด ๋œ๋‹ค.

axios.post("/users/1");

์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ๋“ฑ๋กํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์ด๋ ‡๊ฒŒ ์‚ฌ์šฉํ•œ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ๋“ฑ๋กํ•  ๋•Œ์—๋Š” ๋‘ ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ์— ๋“ฑ๋กํ•˜๊ณ ์ž ํ•˜๋Š” ์ •๋ณด๋ฅผ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค.

axios.post("/users", {
  username: "seulhee",
  name: "seulhee",
});

try...catch

try...catch๋Š” ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌ๋ฌธ์ด๋‹ค.

const fetchUsers = async () => {
  try {
    setError(null);
    setUsers(null);
    setLoading(true);
    const response = await axios.get(
      "https://jsonplaceholder.typicode.com/users"
    );
    setUsers(response.data);
  } catch (e) {
    setError(e);
  }
  setLoading(false);
};

try ์•ˆ์€ ์‹คํ–‰๋  ์„ ์–ธ๋“ค์ด๊ณ  catch ์•ˆ์€ try ๋ธ”๋ก์—์„œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€์„ ๋•Œ ์‹คํ–‰๋  ์„ ์–ธ๋“ค์ด๋‹ค.

API ์žฌ์š”์ฒญ

fetchUsers ํ•จ์ˆ˜๋ฅผ ๋ฐ”๊นฅ์œผ๋กœ ๊บผ๋‚ด ๋ฒ„ํŠผ์„ ๋งŒ๋“ค์–ด ํ•ด๋‹น ํ•จ์ˆ˜๋ฅผ ์—ฐ๊ฒฐํ•ด์ค€๋‹ค.

useAsync Custom Hook