3

Emberjs RESTAdapter の REST API として機能する Node.js、Express アプリがあります。これを Windows Azure で動作させようとしています。以下のように Ember が "/examples/1" で HTTP リクエストを行うと、400, Bad Request が返されます。

トラブルシューティング後、エラーはリクエスト ヘッダーのコンテンツ タイプに依存しているようです。

  • Web ブラウザーで「(ドメイン)/users/1」にアクセスすると、ブラウザー ウィンドウに正しい json が出力されます。
  • Jquery ajax 呼び出しを実行すると、次の結果が得られます。

    これは動作しません:

    $.ajax({
      url: "/users/1",
      contentType: "application/json; charset=UTF-8"
    }).done(function(data) {
      console.log(data);
    });
    

    しかし、これに切り替えると機能します。

    $.ajax({
       url: "/users/1",
       contentType: "application/x-www-form-urlencoded; charset=UTF-8"
    }).done(function(data) {
       console.log(data);
    });
    

では、コンテンツ タイプ「application/json; charset=UTF-8」の http 要求を許可するように nodejs/azure ソリューションを設定するにはどうすればよいですか?

アップデート

コメントの後、これはサーバー側のコードです

var express = require('express');
var app = express();

app.configure(function(){

   app.set('port', process.env.PORT || 3000);
   app.use(express.bodyParser());
   app.use('/', express.static(__dirname + '/WebContent'));
   app.use(express.cookieParser());

});

app.get('/:param/:id', function(req, res) {
   res.json(200, {user: {id:1, name: 'tester'}} )
});

app.get('/:param', function(req, res) {
   res.json(200, {users: [{id:1, name: 'tester'}]})
});

app.listen(app.get('port'), function(){
    console.log("Express server listening on port " + app.get('port'));
});
4

1 に答える 1