从节点中的请求中提取JSON数据
我已经开始使用节点服务器的新网站以更熟悉node.js,并将数据发布到服务器,但我无法弄清楚如何在请求读取JSON数据:从节点中的请求中提取JSON数据
客户端请求:
function addSymptom(name) {
$.ajax({
type: 'POST',
url: '/addSymptom',
data: {
symName: name
},
success: function (data) {
listSymptoms();
},
contentType: "application/json",
dataType: 'json'
});
}
服务器处理器:
app.post('/addSymptom', function (req, res) {
var newSymptom = req.body;
console.log(newSymptom); // undefined :(
res.send(JSON.stringify({
result: 'success'
}));
});
为什么request.body不确定?有没有不同的方式,我应该读取请求正文中的'symName'字段?
一定要对Node.js的添加bodyParser模块..
如果你使用快速3.X/4.x中你只需要确保你有bodyParser包括:
-
快车3.x的
app.use(express.bodyParser({limit : '50mb'}));
快递4.x的
在你的包文件:
"body-parser": "~1.0.0",
或交替运行NPM-安装体解析器
然后在您的Node.js服务器:
var bodyParser = require('body-parser');
// create our app
var app = express();
// instruct the app to use the `bodyParser()` middleware for all routes
app.use(bodyParser());
链接到一个例子: http://code.runnable.com/U0sU598vXio2uD-1/example-reading-form-input-with-express-4-0-and-body-parser-for-node-js 3.没有快递
如果由于某种原因,你决定不t o使用express,您将需要绑定到套接字的数据处理程序以读取数据。
这里是关于此事的文章: http://blog.frankgrimm.net/2010/11/howto-access-http-message-body-post-data-in-node-js/
我不得不单独添加body-parser,因为它不再与express捆绑在一起。我如何实现它? –
@drminnaar查看express 4.x,就好像它不是bundle,你需要包含body-parser组件。 –
好吧,我已经启动并运行了,它似乎已经生成了body,但是它给了我一个无效json的例外。考虑到我从客户端发送的json,它看起来是否格式严格吗?很高兴看到req.body的对象结构... –
什么HTTP库都在服务器上使用?表现? – Quentin
是的,我使用快递。还有一个名为body-parser的库,但我不确定如何使用它,或者甚至可能在req.body为空的情况下使用它? –