JS

API multiple requête probleme

Non Résolu

Bonjour, 

J'ai actuellement un problème au niveau des requêtes d'api. En gros j'utilise un sevrer nodeJS qui centralise sur une API local les données de plusieurs requêtes sur l'api CoinGecko


async function datauniswap() {

    let url = 'https://api.coingecko.com/api/v3/exchanges/uniswap/tickers'

    axios.create({httpsAgent})

    let response = await axios.get(url);

    return response?.data

}

 

async function datauniswapv2() {

    let url = 'https://api.coingecko.com/api/v3/exchanges/uniswap_v2/tickers'

    axios.create({httpsAgent})

    let response = await axios.get(url);

    return response?.data

}

 

 

async function datasushiswap() {

    let url = 'https://api.coingecko.com/api/v3/exchanges/sushiswap/tickers'

    axios.create({httpsAgent})

    let response = await axios.get(url);

    return response?.data

}

 

 

async function dataquickswap() {

    let url = 'https://api.coingecko.com/api/v3/exchanges/quickswap/tickers'

    axios.create({httpsAgent})

    let response = await axios.get(url);

    return response?.data

}

 

 

async function datacurvefinance() {

    let url = 'https://api.coingecko.com/api/v3/exchanges/curve/tickers'

    axios.create({httpsAgent})

    let response = await axios.get(url);

    return response?.data

}

 

server.get('/coingecko', async (req, res) => {

    exchangeone = await datauniswap();

    exchangetwo = await datauniswapv2();

    exchangethree = await datasushiswap();

    exchangequattro = await datacurvefinance();

    exchangefive = await dataquickswap();

    cacheTime = Date.now();

    let data = [exchangeone, exchangetwo, exchangethree, exchangequattro, exchangefive]

    res.json(data)

})


Puis sur mon App react j'appelle l'api 'http://localhost:4500/coingecko' pour pouvoir affichez certaines données qui y sont contenue dans une app. Cependant je suis confronté a un problème a ce niveau la car mon app react appel l'api local plusieurs fois de suite, donc mon server local envoi des requêtes a CoinGecko qui me bloque. J'aimerais faire en sorte que des lors que l'app reçois une valeur a sa requêtes qu'elle n'effectue pas d'autre requêtes. Voici un exemple de mes requêtes depuis mon app react : 


import { useState, useEffect } from "react";

 

function App() {

  const [data, setData] = useState(null);

  const [loading, setLoading] = useState(true);

  const [error, setError] = useState(null)

  useEffect(() => {

    fetch("http://localhost:4500/coingecko")

    .then(response => {

      if (response.ok) {

        return response.json()

      }

      throw response;

    }, [])

    .then(data => {

      setData(data)

    })

      .catch(error => {

      console.error("Error fetching data: ", error)

      setError(error)

    })

    .finally(() => {

      setLoading(false)

    })

  }, [])

 

  //console.log(data)

   

  const uniswap = data&&data[0].tickers?.find(donne => donne.trade_url === 'https://app.uniswap.org/#/swap?inputCurrency=0x2260fac5e5542a773aa44fbcfedf7c193bc2c599&outputCurrency=ETH')

  const uniprice = uniswap?.converted_last?.usd

  const sushiswap = data&&data[2].tickers?.find(donne => donne.trade_url === 'https://app.sushi.com/swap?inputCurrency=0x2260fac5e5542a773aa44fbcfedf7c193bc2c599&outputCurrency=ETH')

  const sushiprice = sushiswap?.converted_last?.usd

  const curvefinance = data&&data[3].tickers?.find(donne => donne.base === 'DAI')

  const curveprice = curvefinance?.converted_last?.usd

  const quickswap = data&&data[4].tickers?.find(donne => donne.trade_url === 'https://quickswap.exchange/#/swap?inputCurrency=0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270&outputCurrency=0xbbba073c31bf03b8acf7c28ef0738decf3695683')

  const quickprice = quickswap?.converted_last?.usd

  console.log(uniprice)

  console.log(sushiprice)

  console.log(curveprice)

  console.log(quickprice)

  

 

  return (

    <>

    {uniprice}

1

2

3

4

5

    </>

  )

}

 

export default App;


Voici les retours des console.log : 


626 vues
27 juillet 2022 à 17:36
Cette pub permet au site de vivre ...

1 commentaire

Bonsoir @szm92 😁


Es-tu bien certain de l'URL de ton fetch ?

Cdlt.

Cette pub permet au site de vivre ...