Ce site utilise des cookies pour améliorer uniquement votre expérience utilisateur.
Vous pouvez lire à tout moment comment nous utilisons les cookies sur le site.
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 :