2 votes

L'obtention des paramètres POST ne fonctionne pas

J'essaie d'envoyer un paramètre de post (clé : test, valeur : somevlaue) en utilisant PostMan en utilisant rectifier cadre. Pour cela, j'ai utilisé deux méthodes, mais les deux ne fonctionnent pas :

Le premier montre cette erreur :

{
  "code": "InternalError",
  "message": "Cannot read property 'test' of undefined"
}

La deuxième (commentée) ne montre que Error : someerror.

Est-ce que je fais quelque chose de mal ?

Voici mon code :

var restify=require('restify');
var fs=require('fs');
var qs = require('querystring');
var bodyParser = require('body-parser');
var urlencodedParser = bodyParser.urlencoded({ extended: false })
var controllers = {};

var server=restify.createServer();

server.post("/get", function(req, res, next){
    res.send({value: req.body.test,
     error: "someerror"});

    //**********METHOD TWO*********************

/*
     if (req.method == 'POST') {
         var body = '';

         req.on('data', function (data) {
             body += data;
         });

         req.on('end', function () {
             var post = qs.parse(body);
             res.send({
                 Data: post.test,
                 Error: "Someerror"
             });
         });
     }
     */

});
server.listen(8081, function (err) {
    if (err)
        console.error(err);
    else
        console.log('App is ready at : ' + 8081);
});

0voto

Craicerjack Points 3632

On dirait que vous avez votre bodyparser mal configuré. Selon les les docs sous la section body parser, vous configurez le parser de cette manière :

server.use(restify.bodyParser({
    maxBodySize: 0,
    mapParams: true,
    mapFiles: false,
    .....
 }));

Par défaut, les données sont mises en correspondance avec req.params mais vous pouvez changer cela et le faire correspondre à req.body en fixant le mapParams option pour false

BodyParser

Bloque votre chaîne sur la lecture et l'analyse du corps de la requête HTTP. Active le type de contenu et exécute la logique appropriée. application/json, application/x-www-form-urlencoded et multipart/form-data sont actuellement supportés.

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