web-dev-qa-db-fra.com

Comment puis-je ajouter un corps de données brutes à une demande axios?

J'essaie de communiquer avec une API de mon application React à l'aide d'Axios. J'ai réussi à faire fonctionner la demande GET, mais il me faut maintenant un POST.

J'ai besoin que le corps soit du texte brut, car je vais y écrire une requête MDX. Voici la partie où je fais la demande:

axios.post(baseUrl + 'applications/' + appName + '/dataexport/plantypes' + plan,
    {
      headers: { 'Authorization': 'Basic xxxxxxxxxxxxxxxxxxx',
      'Content-Type' : 'text/plain' }
    }).then((response) => {
      this.setState({data:response.data});
      console.log(this.state.data);
    });

Ici, j'ai ajouté la partie de type de contenu. Mais comment puis-je ajouter la partie du corps?

Je vous remercie.

Modifier:

Voici une capture d'écran de la requête de Postman qui fonctionne  Postman working request

2
Karim Taha

Pourquoi ne pas utiliser l'API directe axios?

axios({
  method: 'post',
  url: baseUrl + 'applications/' + appName + '/dataexport/plantypes' + plan,
  headers: {}, 
  data: {
    foo: 'bar', // This is the body part
  }
});

Source: axios api

3
Ukasyah

Vous pouvez utiliser le texte ci-dessous pour transmettre le texte brut.

axios.post(baseUrl + 'applications/' + appName + '/dataexport/plantypes' + plan, body,
  {
  headers: { 'Authorization': 'Basic xxxxxxxxxxxxxxxxxxx',
  'Content-Type' : 'text/plain' }
  }).then((response) => {
  this.setState({data:response.data});
  console.log(this.state.data);
});

Ayez simplement votre texte brut dans body ou transmettez-le directement entre guillemets en tant que 'raw text to be sent' au lieu de body.

La signature de la publication axios est axios.post(url[, data[, config]]); la data correspond donc au lieu où vous transmettez le corps de votre demande.

1
Madhu Bhat

Référence originale de axios.post sur Github .

axios.post(`${baseUrl}applications/${appName}/dataexport/plantypes${plan}`, {
    mdxQuery: '<your_mdx_query>',
  })
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  });

Et les paramètres supplémentaires de request doivent être placés sous le troisième argument (par exemple, comme dans l'extrait de problème ):

axios.post(`${baseUrl}applications/${appName}/dataexport/plantypes${plan},
   {
     mdxQuery: '<your_mdx_query>',
   },
   {
     headers: { 
       'Authorization': 'Basic xxxxxxxxxxxxxxxxxxx',
       'Content-Type': 'text/plain'
     }
   }
);
0
Xarvalus

Tu l'as fait dans mon projet

 axios({
  method: "POST",
  url: "https://URL.com/api/services/fetchQuizList",
  headers: {
    "x-access-key": data,
    "x-access-token": token
  }
   data: {
     quiz_name: quizname,

   }
})
  .then(res => {
    console.log("res", res.data.message);

  })
  .catch(err => {
    console.log("error in request", err);
  });

Cela devrait aider

0
Adnan shah