0

connect-restミドルウェアgrunt serveで使用しようとしています。私はGETリクエストでは機能しましたが、POSTでは機能しなかったように設定しようとしました。私は何が欠けているのだろうか。これは私の Gruntfile.js (抜粋) です:connect-restGruntfile.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);

...

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)
        ];
      }
    }
  },

それは魅力のように機能します。しかし、その1行を次のように変更すると:

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

また

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

次に、投稿すると、ログに次のエントリが表示されます(grunt --debugを実行):

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

投稿時の404エラー(作品を取得)。

何が恋しいですか?

4

1 に答える 1

1

私の目的では、JSON の投稿をモックとしてサポートできるので、そもそもconnect-restは必要ないことがわかりました。connectのビルトイン機能は、私が必要としていたすべてを提供してくれました。したがって、今の始まりは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 を単純にエコー バックしています。

于 2015-10-30T12:59:47.763 に答える