我需要帮助。我正在将json数据发布到我的节点服务器。节点服务器正在使用RESTify作为其API。我无法从发布数据的正文中获取req.body.name
。
发布的数据包含一个json正文。在其中我有姓名,日期,地址,电子邮件等密钥。
我想从json体中取出这个名字。我正在尝试req.body.name
,但它无效。
我还包括server.use(restify.bodyParser());
,但它无效。
我可以req.params.name
并分配一个值。但是,如果我发布json数据,如:{'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);
});
答案 0 :(得分:8)
如果您想使用req.params
,则应更改:
server.use(restify.bodyParser({ mapParams: false }));
使用true:
server.use(restify.bodyParser({ mapParams: true }));
答案 1 :(得分:4)
您是否尝试使用标准JSON库将主体解析为json对象?然后,你应该能够获得你需要的任何财产。
var jsonBody = JSON.parse(req.body);
console.log(jsonBody.name);
答案 2 :(得分:2)
除了以下答案。 restify 5.0中的最新语法已经改变。
您要查找的所有解析器都在restify.plugins
内,而不是restify
使用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));
答案 3 :(得分:0)
你必须在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);
});
答案 4 :(得分:0)
<?php
$result = [];
$color_index = 0;
foreach ($letters as $i => $letter) {
$pagenum = $i + 1;
for ($j = 1; $j <= $colorsperpage; $j++) {
$key = sprintf("%s%d-%02d", $letter, $pagenum, $j);
$colorcode = $hexValues[$color_index++];
$result[$key] = $colorcode;
}
}
file_put_contents("colorbook.js", "var color = " . json_encode($result));
...是什么对我来说适用于Restify版本8.3.2