web-dev-qa-db-ja.com

Node.jsでRESTify POST body / json

私は助けを必要としています。 jsonデータをノードサーバーにPOSTしています。ノードサーバーはAPIにRESTifyを使用しています。投稿されたデータの本文から_req.body.name_を取得できません。

投稿されたデータにはjson本文が含まれています。その中には、名前、日付、住所、メールアドレスなどのキーがあります。

Json本体から名前を取得したいと思います。 _req.body.name_を実行しようとしていますが、機能していません。

server.use(restify.bodyParser());も含めましたが、機能していません。

_req.params.name_して値を割り当てることができます。しかし、私がPOST json data like:_{'food': 'ice cream', 'drink' : 'coke'}_の場合、未定義になります。ただし、_req.body_を実行すると、json本体全体が投稿されます。 「drink」のようなアイテムを具体的に取得して、console.logに表示することができます。

_var restify = require('restify');
var server = restify.createServer({
  name: 'Hello World!',
  version: '1.0.0'
});

server.use(restify.acceptParser(server.acceptable));
server.use(restify.jsonp());
server.use(restify.bodyParser({ mapParams: false }));

server.post('/locations/:name', function(req, res, next){
var name_value  = req.params.name;
res.contentType = 'json';

console.log(req.params.name_value);
console.log(req.body.test);
});

server.listen(8080, function () {
  console.log('%s listening at %s', server.name, server.url);
});
_
10
Danny BoyWonder

req.paramsを使用する場合は、以下を変更する必要があります。

server.use(restify.bodyParser({ mapParams: false }));

trueを使用するには:

server.use(restify.bodyParser({ mapParams: true }));
9
mindeavor

標準のJSONライブラリを使用して本文をjsonオブジェクトとして解析しようとしましたか?そうすれば、必要なプロパティを取得できるはずです。

var jsonBody = JSON.parse(req.body);
console.log(jsonBody.name);
5
MForMarlon

以下の回答に加えて。 restify5.0の最新の構文が変更されました。

探しているすべてのパーサーは、restifyではなくrestify.plugins内にあります。restify.plugins.bodyParserを使用してください。

使い方はこちらです。

const restify = require("restify");


global.server = restify.createServer();
server.use(restify.plugins.queryParser({
 mapParams: true
}));
server.use(restify.plugins.bodyParser({
mapParams: true
 }));
server.use(restify.plugins.acceptParser(server.acceptable));
2
Himanshu sharma

bodyParserをアクティブにしてreq.paramsを使用する必要があります。

var restify = require('restify');

var server = restify.createServer({
  name: 'helloworld'
});

server.use(restify.bodyParser());


server.post({path: '/hello/:name'}, function(req, res, next) {
    console.log(req.params);
    res.send('<p>Olá</p>');
});

server.get({path: '/hello/:name', name: 'GetFoo'}, function respond(req, res, next) {
  res.send({
    hello: req.params.name
  });
  return next();
});

server.listen(8080, function() {
  console.log('listening: %s', server.url);
});
0
Lucas Burg
var restify = require('restify')
const restifyBodyParser = require('restify-plugins').bodyParser;
function respond(req, res, next) {
    console.log(req.body)
    const randomParam = req.body.randomParam
    res.send(randomParam);
    next();
}

var server = restify.createServer();
server.use(restifyBodyParser());
server.post('/hello/:name', respond);
server.head('/hello/:name', respond);

server.listen(8080, function() {
    console.log('%s listening at %s', server.name, server.url);
});

... restifyバージョン8.3.2で私のために働いたものは何ですか

0
James Shapiro