Axios get in url fonctionne mais avec le deuxième paramètre comme objet, ce n'est pas le cas


121

J'essaie d'envoyer la demande GET en tant que deuxième paramètre mais cela ne fonctionne pas tant qu'il le fait en tant qu'URL.

Cela fonctionne, $ _GET ['naam'] renvoie le test:

export function saveScore(naam, score) {
  return function (dispatch) { 
    axios.get('http://****.nl/****/gebruikerOpslaan.php?naam=test')
      .then((response) => {
        dispatch({type: "SAVE_SCORE_SUCCESS", payload: response.data})
      })
      .catch((err) => {
        dispatch({type: "SAVE_SCORE_FAILURE", payload: err})
      })
  }
};

Mais quand j'essaye ceci, il n'y a rien du $_GETtout:

export function saveScore(naam, score) {
  return function (dispatch) { 
    axios.get('http://****.nl/****/gebruikerOpslaan.php',
    {
        password: 'pass',
        naam: naam,
        score: score
    })
      .then((response) => {
        dispatch({type: "SAVE_SCORE_SUCCESS", payload: response.data})
      })
      .catch((err) => {
        dispatch({type: "SAVE_SCORE_FAILURE", payload: err})
      })
  }
};

Pourquoi je ne peux pas faire ça? Dans la documentation, il est clairement indiqué que c'est possible. Avec $_POSTça ne marche pas non plus.

Réponses:


298

axios.get accepte une configuration de requête comme deuxième paramètre (pas les paramètres de chaîne de requête).

Vous pouvez utiliser l' paramsoption config pour définir les paramètres de chaîne de requête comme suit:

axios.get('/api', {
  params: {
    foo: 'bar'
  }
});

11
Comment l'extraire côté serveur?
Mustafa Mamun

1
@zero_cool vous n'avez pas besoin d'accéder aux paramètres, ici, par exemple, vous pouvez accéder à "foo" et il renverra "bar"
Ashutosh Raj

L'extraction côté serveur est un point important ici, je suis sûr que vous pouvez utiliser la chaîne foo comme paramètre pour votre méthode côté serveur, mais je ne sais pas comment saisir tous les paramètres à la fois en tant qu'objet dans votre méthode côté serveur. un indice?
J'essaye

86

Sur le client:

  axios.get('/api', {
      params: {
        foo: 'bar'
      }
    });

Sur le serveur:

function get(req, res, next) {

  let param = req.query.foo
   .....
}

1
@danikorean, pouvons-nous écrire le même code client sans utiliser d'alias de méthode de requête, c'est-à-dire au lieu d' axios.getutiliser uniquementaxios({url:"url_goes_here",data:{params:{foo:'bar'}})
srbcheema1

1
Ce code serveur m'a fait gagner des heures, merci! Si vous vous posez la question, restez avec «params» pour l'appel .get, et non «body» comme vous l'avez peut-être vu en cherchant. Vous pouvez le renommer n'importe quoi du côté serveur si vous le souhaitez, mais gardez les paramètres pour le client get.
DORRITO le

axios.get('/api', { params}) ! ==axios.get('/api', params)
xgqfrms
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.