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.

Sinan Samet
la source

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'
  }
});
Nick Uraltsev
la source
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
   .....
}
danikoren
la source
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