完善2.6后发布数据

时间:2013-11-01 09:46:32

标签: node.js curl restify

我刚刚开始尝试Restify(和NodeJS一般),我在获取用户POST数据方面遇到了一些麻烦。

我有一个基本的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
{}
{}

希望有人可以帮助我:)。

凯文

2 个答案:

答案 0 :(得分:2)

使用bodyParser代替queryParser

答案 1 :(得分:1)

为了处理RESTful服务中通过HTTP POST请求发送的JSON文档,您需要:

  1. 在您的服务中使用 bodyParser
  2. 确保 在提交HTTP POST请求时包含HTTP标头“Content-Type:application / json”
  3. 你的CURL命令应该是这样的:

      

    curl -is -X POST -H“Content-Type:application / 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);
    });

    祝你好运!