-
[ToyProject-Todomate] ํฌ๋๋ฉ์ดํธ ํด๋ก ํ๋ก์ ํธ 32WEB Dev/ToyProject 2022. 1. 26. 19:17728x90
๐ท CloneTodo โ - Todomate Clone Project | Team CloneMate
CloneTodo : ๋ง์ ์ฌ๋๋ค์ด ์ฌ๋ํ๋ ํฌ๋๋ฉ์ดํธ๋ฅผ ํด๋ก ํ์ฌ ์น ์๋น์ค๋ฅผ ๋ฐฐํฌํด๋ณด๋ ํ๋ก์ ํธ
์ด๋ฒ์ ๋น๋๊ธฐ ๋ชจ๋์ ๋ง๋ค์ด๋ณด์.
๋ณ๋ ์ค์นํ ํ์ ์๋ ๋ค์ํ ์๋ฐ์คํฌ๋ฆฝํธ ๋ชจ๋์ด ์์ง๋ง(HTTP Client ๋ผ์ด๋ธ๋ฌ๋ฆฌ : HTTP ์์์ ํต์ ์ ํ๋ ์๋ฐ ๊ธฐ๋ฐ ์ปดํฌ๋ํธ) ๋ฆฌ์กํธ ํ๋ก์ ํธ์์ ๋ง์ด ์ฌ์ฉํ๊ณ ์๊ธฐ๋ ํ๊ณ ์ฝ๋๊ฐ ๊ฐ๊ฒฐํด๋ณด์ด๋ axios๋ฅผ ์ฌ์ฉํด๋ณธ๋ค.
axios๋ yarn์ด๋ npm์ ํตํด ์์ ์์ญ์ ์ค์นํด์ ์ฌ์ฉํด์ผ ํ๋ค. ๊ทธ๋์ ์์กด์ฑ์ด ์๊ธฐ๋ ๊ฒ์ด ๋จ์ ์ด๋ค.
์ถ์ฒํด์ฃผ์ fetch๋ ์ฌ์ฉํด๋ณด๊ณ ์ถ์๋๋ฐ ๋ ํผ๋ฐ์ค๊ฐ ์กฐ๊ธ ๋ ๋ง์ axios๋ก ์ ํํ๊ณ
ํ์ผ ๋ถ๋ฆฌ๋ฅผ ํตํด api์ ํต์ ํ๋ ๊ณผ์ ์ ํ๋์ ํ์ผ์์ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์๋ณด๋ ค๊ณ ํ๋ค.
Recoil ์์๋ ๋น๋๊ธฐ ํต์ ์ ์ํด ์ฌ์ฉํ ์ ์๋ ์ฝ๋๋ฅผ ์ฃผ๊ณ ์๋๋ฐ ์ด๊ฑธ ์ฐ๊ธฐ์ ์์ง ์ฌ๋ฌ๋ชจ๋ก ์ง์์ด ๋ชจ์๋ผ์ ...
1. axios ์ค์นํ๊ธฐ
axios๋ ๋น๋๊ธฐ ํต์ ํ๋ ์์ํฌ์ด๊ธฐ ๋๋ฌธ์ yarn์ด๋ npm ์ ํตํด ์ค์นํด์ค์ผ ํ๋ค.
์๋์ ๋ช ๋ น์ด๋ฅผ ํฐ๋ฏธ๋์ ์ ๋ ฅํ๋ค.
//npm npm install axios //axios yarn add axios
๊ทธ๋ฆฌ๊ณ ๋ณ๋์ ๋๋ ํ ๋ฆฌ - ์ปดํฌ๋ํธ ํ์ผ์ ํ๋ ์์ฑํด์ค๋ค.
๋๋ api - getApis.js ๋ผ๋ ์ด๋ฆ์ ๋๋ ํ ๋ฆฌ์ ์ปดํฌ๋ํธ๋ฅผ ์์ฑํ๋ค.
API์ ํต์ ํ๊ธฐ ์ํ ๋ฐฉ๋ฒ ์ค์ ์ฃผ๋ก ์ฌ์ฉํ๋ ๋ฐฉ์์ ์๋์ ๊ฐ๋ค.
GET : API์ ์ ๋ณด๋ฅผ ๋ฐ์์ค๊ธฐ ์ํด GET ๋ฐฉ์์ ์ฌ์ฉํ๋ค.
POST : API๋ก ์ ๋ณด๋ฅผ ์ ์กํด ๊ฐ์ด๋ ์ํ๋ฅผ ๋ณ๊ฒฝํ๊ธฐ ์ํด POST ๋ฐฉ์์ ์ฌ์ฉํ๋ค.
DELETE : ๋ฌด์ธ๊ฐ๋ฅผ ์ญ์ ํ๊ธฐ ์ํด DELETE ๋ฐฉ์์ผ๋ก ์ ๋ฌํ๋ค.์ฟผ๋ฆฌ๋ก ๋ฐ์ง๋ฉด GET์ SELECT, POST๋ UPDATE, PUT, PATCH, DELETE๋ DELETE ๋ค.
์ฐ์ ๋ฌด์ธ๊ฐ๋ฅผ GET ๋ฐฉ์์ผ๋ก ๋ถ๋ฌ์๋ณด์.
2. axios ์์ํ๊ธฐ
์๊น ๋ง๋ getApis ์ปดํฌ๋ํธ ํ์ผ ์๋จ์ axios๋ฅผ import ํด์ค๋ค.
import axios from 'axios';
์ฐ๋ฆฌ๋ ์์ง API๊ฐ ์์ฑ๋์ง ์์๊ธฐ ๋๋ฌธ์ ๊ฐ์์ ํ ์คํธ api๋ฅผ ํ๋ ์ป์ด์จ๋ค.
(์ฒ์์๋ ๋ก์ปฌ์ data/data.json ํ์ผ์ ๋ง๋ค์ด ์๋ํ์ผ๋ ๋ก์ปฌ์์ axios๋ก json์ ๋ฐ์์ฌ ์๋ ์๋ค๊ณ ํ๋ค. ์ฐธ๊ณ ํ ๋ธ๋ก๊ทธ๋ ์ฌ๊ธฐ)
jsonPlaceHolder ์๋น์ค์์ ์ํ API๋ฅผ ํ๋ ๋ฐ์๋ค.
https://jsonplaceholder.typicode.com/users/1
์์ URL์ ์์ฒญํ๋ axios ํจ์๋ฅผ getApis ํ์ผ์ ๋ง๋ค์ด์ค๋ค.
import axios from 'axios'; export default function getResources () { //axios axios.get('https://jsonplaceholder.typicode.com/users/1') .then((Response)=>{console.log(Response.data)}) .catch((Error)=>{console.log(Error)}) }
์์ getResources ๋ฅผ ์คํํ๊ธฐ ์ํด์๋ ์ด๋ค ์ ํธ๋ฅผ ์ค์ผ ํ๋๋ฐ useEffect ๋ onClick๋ฑ์ ์ด์ฉํ ์ ์๊ฒ ๋ค.
๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค๋ ๊ฒ์ด ํ์ํ ์ปดํฌ๋ํธ์ ํด๋น ํจ์๋ฅผ import ํด๋ณด์
๋๋ ์ด์ ์ ๋ง๋ค์ด๋ Goals ์ปดํฌ๋ํธ์ ๋ฃ์ด๋ณด๊ธฐ๋ก ํ๋ค.
์๋์ import ๋ฌธ์ ์๋จ์ ์ถ๊ฐํ๋ค.
import getResources from '../api/getApis';
๊ทธ๋ฆฌ๊ณ Goals ์ปดํฌ๋ํธ ์์ useEffect๋ฅผ ์ถ๊ฐํด์ค๋ค.
useEffect๋ฅผ ์ถ๊ฐํ๊ธฐ ์ํด์๋ react์์ useEffect๋ฅผ import ํด์์ผ ํ๋ค.
import React, { useEffect } from "react"; import getResources from '../api/getApis'; export default function Goals(props) { useEffect(()=>{getResources()}) }
์์ ๊ฐ์ด ์์ฑํ๋ฉด Goals ์ปดํฌ๋ํธ๊ฐ ์คํ๋ ๋ (๋ ๋๋ง ๋ ๋) getResources ํจ์๊ฐ ์คํ๋๋ค.
์ด์ ๋ณ๋์ ํ์ผ์์ axios ํจ์๋ฅผ ๋ง๋ค์ด GET์ผ๋ก ๋ถ๋ฌ์ฌ ์ ์๊ฒ ๋์๋ค.
728x90'WEB Dev > ToyProject' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ToyProject-Todomate] ํฌ๋๋ฉ์ดํธ ํด๋ก ํ๋ก์ ํธ 34 (0) 2022.02.03 [ToyProject-Todomate] ํฌ๋๋ฉ์ดํธ ํด๋ก ํ๋ก์ ํธ 33 (0) 2022.02.01 [ToyProject-Todomate] ํฌ๋๋ฉ์ดํธ ํด๋ก ํ๋ก์ ํธ 31 (0) 2022.01.24 [ToyProject-Todomate] ํฌ๋๋ฉ์ดํธ ํด๋ก ํ๋ก์ ํธ 30 (0) 2022.01.16 [ToyProject-Todomate] ํฌ๋๋ฉ์ดํธ ํด๋ก ํ๋ก์ ํธ 29 (0) 2022.01.16