web-dev-qa-db-fra.com

Utiliser JavaScript Axios/Fetch. Pouvez-vous désactiver le cache du navigateur?

J'essaie d'interroger une API de devis pour un projet freeCodeCamp que je mets à jour vers React.js. J'essaie maintenant d'utiliser Fetch ou Axios pour interroger l'API mais met en cache la réponse dans le navigateur. Je sais que dans $ajax il y a un { cache: false } qui obligerait le navigateur à faire une nouvelle demande.

Est-il possible que je puisse faire la même chose avec Fetch ou Axios?

Le paramètre cache-control semble déjà être défini sur max-age: 0 par Axios.

 enter image description here

Ceci est mon code que j'ai qui interroge l'API.

generateQuote = () => {
  axios.get('https://quotesondesign.com/wp-json/posts?filter[orderby]=Rand&filter[posts_per_page]=1')
    .then(response => {
      const { title, content, link } = response.data[0];
      console.log(title, content, link)
      this.setState(() => ({ title, content, link }));
    })
    .catch(err => {
      console.log(`${err} whilst contacting the quote API.`)
    })

}

3
Asjas

Bon alors j'ai trouvé une solution. J'ai dû définir un horodatage sur l'URL de l'API pour qu'il puisse effectuer un nouvel appel. Il ne semble pas y avoir de moyen de forcer axios ou fetch à désactiver le cache.

Voici à quoi ressemble mon code

axios.get(`https://quotesondesign.com/wp-json/posts?filter[orderby]=Rand&filter[posts_per_page]=1&timestamp=${new Date().getTime()}`)
  .then(response => {
    const { title, content, link } = response.data[0];
    console.log(title, content, link)
    this.setState(() => ({ title, content, link }));
  })
  .catch(err => {
    console.log(`${err} whilst contacting the quote API.`)
  })
10
Asjas