我刚刚开始尝试Restify (和一般的NodeJS ),但我在让用户发布数据时遇到了一些麻烦。
我有一个基本的Node应用程序。在文档和一些博客文章中,我读到它和使用queryParser一样简单,但它不起作用。我想问题出在我的CURL命令上。
节点应用:
var restify = require('restify');
function userCreation(request, result, next) {
console.log(request.body);
console.log(request.query);
console.log(request.params);
result.send({ name: request.params.name });
return next();
}
var server = restify.createServer({ version: '1.0.0' });
server.use(restify.gzipResponse());
server.use(restify.queryParser());
server.post({ path: '/users', versions: ['1.0.0'] }, userCreation);
server.listen(8080, function() {
console.log('%s listening at %s', server.name, server.url);
});CURL命令:
curl -is -X POST -H 'accept-version: 1.0.0' -d '{ "name": "John" }' http://127.0.0.1:8080/users
curl -is -X POST -H 'accept-version: 1.0.0' -d 'name=John' http://127.0.0.1:8080/users回应是:
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 2
Date: Fri, 01 Nov 2013 09:40:08 GMT
Connection: keep-alive
{}节点日志为:
restify listening at http://0.0.0.0:8080
undefined
{}
{}希望有人能帮助我:)
凯文
发布于 2015-01-16 21:42:48
请使用bodyParser而不是queryParser。
发布于 2015-03-22 15:15:41
为了在RESTful服务中处理通过HTTP POST请求发送的JSON文档,您需要:
>G29
您的CURL命令应该类似于:
curl -is -X POST -H“内容类型:应用程序/json”-H "accept-version: 1.0.0“-d '{ "name":"John”}‘http://127.0.0.1:8080/users
您的Restify服务代码:
var restify = require('restify');
function userCreation(request, result, next) {
console.log(request.body);
result.send({
name: request.body.name
});
return next();
}
var server = restify.createServer({
version: '1.0.0'
});
server.use(restify.gzipResponse());
server.use(restify.bodyParser());
server.post({
path: '/users',
versions: ['1.0.0']
}, userCreation);
server.listen(8080, function() {
console.log('%s listening at %s', server.name, server.url);
});
祝好运!
https://stackoverflow.com/questions/19724281
复制相似问题