J'essaie d'envoyer des données via une requête axios à mon script principal, mais le corps semble vide.
Voici une demande envoyée depuis le front-end:
axios.request({
method: 'GET',
url: `http://localhost:4444/next/api`,
headers: {
'Authorization': token
},
data: {
next_swastik: 'lets add something here'
},
}).then((res)=>{
console.log("api call sucessfull",res);
}).catch((err)=>{
console.log("api call unsucessfull",err);
this.props.toggleLoading(false);
})
Voici un back-end:
app.get('/next/api', verifyToken, function(req, res) {
console.log(req.body);
})
Mais je reçois {}
corps vide. J'obtiens des en-têtes et d'autres données mais pas des données.
Les demandes GET ne doivent pas avoir de corps.
Changez la méthode de 'GET' en 'POST'
Ainsi:
axios.request({
method: 'POST',
url: `http://localhost:4444/next/api`,
headers: {
'Authorization': token
},
data: {
next_swastik: 'lets add something here'
},
})
et changez votre api pour attendre un post
app.post('/next/api', verifyToken, function(req, res) {
console.log(req.body);
});
o
Modifiez la propriété data
en params
axios.request({
method: 'GET',
url: `http://localhost:4444/next/api`,
headers: {
'Authorization': token
},
params: {
next_swastik: 'lets add something here'
},
})
et changez l'api pour vous déconnecter des paramètres
app.get('/next/api', verifyToken, function(req, res) {
console.log(req.params);
});
et, comme l'a dit @MaieonBrix, assurez-vous que vos en-têtes contiennent le type de contenu que vous envoyez.
Il semble qu'il ne vous reste que deux points pour le faire fonctionner:
un: la méthode http doit être définie sur POST
au lieu de GET
car vous voulez envoyer quelque chose.
deux: vous pouvez ensuite ajouter l'en-tête http (comme ce que vous avez fait avec l'en-tête d'autorisation) Content-Type
: 'application/json`
Sur le back-end, n'oubliez pas d'utiliser une sorte de package d'utilitaire body parser comme celui-ci: body-parser et de le configurer avec votre application.
Je suppose que votre serveur utilise express, voici comment vous le ferez avec express:
const express = require('express');
const app = express();
const bodyParser = require('body-parser')
const jsonParser = bodyParser.json();
app.use(jsonParser); // use it globally
app.get('your_route', jsonParser, otherMiddleware, (req, res) => ...); // use it for specific routes
/* ... rest of your code */
Essaye ça
this.axios('realties', { params: this.filter })