私は助けを必要としています。 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);
});
_
req.params
を使用する場合は、以下を変更する必要があります。
server.use(restify.bodyParser({ mapParams: false }));
trueを使用するには:
server.use(restify.bodyParser({ mapParams: true }));
標準のJSONライブラリを使用して本文をjsonオブジェクトとして解析しようとしましたか?そうすれば、必要なプロパティを取得できるはずです。
var jsonBody = JSON.parse(req.body);
console.log(jsonBody.name);
以下の回答に加えて。 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));
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);
});
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で私のために働いたものは何ですか