156 votes

Axios get in url fonctionne mais avec le deuxième paramètre comme objet, il ne fonctionne pas.

J'essaie d'envoyer une requête GET en tant que second paramètre mais cela ne fonctionne pas alors que cela fonctionne 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, il n'y a rien dans $_GET du tout :

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 ne puis-je pas le faire ? Dans la documentation, il est clairement indiqué que c'est possible. Avec $_POST ça ne marche pas non plus.

378voto

Nick Uraltsev Points 4551

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

Vous pouvez utiliser le params pour définir les paramètres de la chaîne d'interrogation comme suit :

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

12 votes

Comment l'extraire du côté serveur ?

1 votes

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

0 votes

L'extraction côté serveur est un point important ici, je suis sûr que vous pouvez utiliser la chaîne de caractères foo comme paramètre pour votre méthode côté serveur, mais je ne suis pas sûr de savoir comment récupérer tous les paramètres en une seule fois comme objet dans votre méthode côté serveur. J'essaie d'obtenir cette aide à partir de l'url suivante stackoverflow.com/questions/55602990/

112voto

danikoren Points 1367

Sur le client :

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

Sur le serveur :

function get(req, res, next) {

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

2 votes

@danikorean, peut-on écrire le même code client sans utiliser d'alias de méthode de requête, c'est-à-dire au lieu de axios.get en utilisant uniquement axios({url:"url_goes_here",data:{params:{foo:'bar'}})

1 votes

Ce code serveur m'a fait gagner des heures, merci ! Pour ceux qui se posent la question, gardez 'params' pour l'appel .get, et non 'body' comme vous l'avez peut-être vu en cherchant autour de vous. Vous pouvez le renommer comme vous le souhaitez du côté serveur, mais gardez params pour le get du client.

0 votes

axios.get('/api', { params}) !== axios.get('/api', params)

0voto

cormacncheese Points 51

Pour moi, j'ai essayé d'envoyer des paramètres en utilisant axios.post .

Lorsque le client et le serveur passent en mode axios.get , req.query.foo a fonctionné comme un charme

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X