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'));
});