使用connect-rest支持grunt-serve中的POST?

时间:2015-10-29 06:49:09

标签: connect grunt-contrib-connect connect-rest

我正在尝试将connect-restconnect-rest中间件一起使用。我尝试在Gruntfile.js中配置module.exports = function (grunt) { var postResponder = function(request, content, callback) { callback(null, {Status : 42}); } var Rest = require('connect-rest'); var rest = Rest.create( {context: '/'} ); rest.assign(['get'],'/*', postResponder); 用于 GET 请求,但不用于 POST 。我想知道我错过了什么。这是我的Gruntfile.js(摘录):

livereload: {
    options: {
      open: true,
      middleware: function (connect) {
        return [
          connect().use(rest.processRequest()),
          connect.static('.tmp'),
          connect().use('/bower_components', connect.static('./bower_components')),
          connect().use('/app/styles', connect.static('./app/styles')),
          connect.static(appConfig.app)
        ];
      }
    }
  },

...

        rest.assign(['post'],'/*', postResponder);

这就像一个魅力。但是,当我将这一行更改为:

        rest.assign('*','/*', postResponder);

[D] server POST /api/groups.json?cache=false&force=true&requesttime=2015-10-29T06:46:24.443Z 404 103 - 2.027 ms

然后在发布时,我在日志中获得以下条目(运行grunt --debug):

autocomplete

发布(上班)时

404 错误。

我想念什么?

1 个答案:

答案 0 :(得分:1)

事实证明,出于我的目的 - 能够支持JSON作为模拟的帖子,我首先不需要connect-restconnect的功能构建提供了我所需要的一切。所以Gruntfile.js的开头现在看起来像这样:

    module.exports = function (grunt) { 
           var bodyParser = require("body-parser");
           var postResponder = function(request, response, next) {
               if (request.method === 'POST') {
                   console.log(request.method+" "+request.url);
                   response.setHeader('Content-Type', 'application/json');
                   response.statusCode = 200;
                   response.end(JSON.stringify(request.body));
               } else {
                   next();
               }
            };

livereload部分如下:

      livereload: {
        options: {
          open: true,
          middleware: function (connect) {
            return [
              connect().use('/api', bodyParser.json()),
              connect().use('/api', postResponder),
              connect.static('.tmp'),
              connect().use('/bower_components',
                             connect.static('./bower_components')),
              connect().use('/app/styles', connect.static('./app/styles')),
              connect.static(appConfig.app)
            ];
          }
        }
      }

注意:我将回发限制为此处对/ api的调用 - 您可能需要不同的端点。该示例简单地回应了收到的JSON。