0
votes

Les paramètres Axios ne fonctionnent pas mais l'URL codée en dur fonctionne?

Axios affiche une Error: OAUTH verification failed. quand j'utilise, "params" dans l'objet axios mais quand je code en dur la demande de publication ça marche bien!

Voici mon objet axios:

   const blockKey  = req.body.blockKey; { "1sf2f" }
  
  const request_data = {
    url: `http://travel/bookticket?blockKey=${blockKey}`,
    method: 'post',
  };
  
  axios({
      method: request_data.method,
      url: request_data.url,
      headers: {
          'Content-Type': 'application/json',
          ...oauth.oauth.toHeader(oauth.oauth.authorize(request_data)),
      }
  })
    .then((response) => {
        res.send(response.data)
    })
    .catch((error) => {
        res.send(error.response.data)
    });

Ce qui précède montre une erreur, mais

const blockKey  = req.body; // { "blockKey" : "1sf2f" }
  
  const request_data = {
    url: `http://travel/bookticket`, //temp url for Stackoverflow purpose
    method: 'post',
  };
  
  axios({
      method: request_data.method,
      url: request_data.url,
      headers: {
          'Content-Type': 'application/json',
          ...oauth.oauth.toHeader(oauth.oauth.authorize(request_data)),
      },
      params: {
         blockKey
     }
  })
    .then((response) => {
        res.send(response.data)
    })
    .catch((error) => {
        res.send(error.response.data)
    });

J'utilise ce pack npm pour l' authentification oAuth 1.0 . S'il vous plaît, aidez, je connais les travaux codés en dur, mais je veux savoir quelle est l'erreur sur les paramètres un!

Remarque: j'ai même essayé d'utiliser "qs" mais cela ne sert à rien


0 commentaires

3 Réponses :


0
votes

Le code ci-dessous est extrait de la documentation officielle axios et a été testé. Documents Axios

axios.get('/user', {
    params: {
      ID: 12345
    }
  })
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  })
  .then(function () {
    // always executed
  });


1 commentaires

J'ai vérifié cela, et dans mon cas, cela ne fonctionne pas!



0
votes

Dans le premier cas, vous n'utilisez pas de paire clé: valeur, mais plutôt un objet à l'intérieur d'un bloc. Vous pouvez à la place utiliser un opérateur de propagation pour "blockKey" ou ne pas utiliser block pour la clé "params" et utiliser directement "blockKey".


3 commentaires

Vous ne comprenez pas ce que vous dites? pouvez-vous poster un exemple?


@Shivani patel - ce que vous avez posté aurait pu faire un bon commentaire - pour une bonne réponse, pourriez-vous démontrer votre réponse avec un exemple de code s'il vous plaît?


Ce que j'ai écrit avec des mots est clairement démontré par @ evgeni-fotia dans les commentaires de ce post. J'espère que ça t'as aidé. Sinon, je serai heureux d'exemples de code postal.



1
votes

Le problème est qu'à partir du cas d'erreur, blockKey est un objet et non une chaîne. Il doit s'agir d'une chaîne indiquant comment il est utilisé dans l'objet params. changez-le en chaîne

const blockKey = req.body.blockKey

Ou

const { blockKey } = req.body;

Cela devrait résoudre le problème.


8 commentaires

Comme je l'ai mentionné, j'ai utilisé le package qs pour le stringfy! ce n'est pas le problème!


extrait de code postal sur la façon dont vous avez utilisé le package qs.


qs.stringify(req.body) qui donnera blockKey=1sf2f


si vous enregistrez blockKey après cette affectation, il vous donnera 'blockKey = 12f2f' mais ce que vous voulez, c'est que blockKey soit '12f2f'. qs n'est pas pour ce scénario


Je crois que vous n'avez pas ma question


@samanthas vous voulez passer { blockKey: "sameValue"} aux paramètres axios mais ce que vous faites est de passer { blockKey: {blockKey: "sameValue"}} donc la réponse de @urchmaney est correcte


Non, comme je passe dans les paramètres, il ajoute automatiquement à l'URL en tant que pramas! Donc je n'ai pas besoin de me séparer! Comme vous l'avez vu sur le premier exemple que j'ai codé en dur à la fin de l'URL, j'ai divisé


@samantha fait console.log(error.response.request.responseURL) et vous comprendrez