【问题标题】:Restify 2.6 post dataRestify 2.6 发布数据
【发布时间】:2013-11-12 12:10:41
【问题描述】:

我刚开始尝试 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
{}
{}

希望有人可以帮助我:)

凯文

【问题讨论】:

    标签: node.js curl restify


    【解决方案1】:

    使用bodyParser 代替queryParser

    【讨论】:

      【解决方案2】:

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

      1. 在您的服务中使用 bodyParser
      2. 确保在提交 HTTP POST 请求时包含 HTTP 标头“Content-Type: application/json”

      你的 CURL 命令应该是这样的:

      curl -is -X POST -H "Content-Type: application/json" -H “接受版本:1.0.0”-d'{“名称”:“约翰”}' 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);
      });

      祝你好运!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-31
        • 2014-11-09
        • 2013-05-31
        • 1970-01-01
        • 2016-08-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多