ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ToyProject-Todomate] ํˆฌ๋‘๋ฉ”์ดํŠธ ํด๋ก  ํ”„๋กœ์ ํŠธ 32
    WEB Dev/ToyProject 2022. 1. 26. 19:17
    728x90


    ๐Ÿ”ท 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

    ๋Œ“๊ธ€

Designed by Tistory.