特定のルートにJSONレスポンスを返す簡単なコードがあります。現在のコードは次のとおりです。
var express = require('express')
, async = require('async')
, http = require('http')
, mysql = require('mysql');
var app = express();
var connection = mysql.createConnection({
Host: 'localhost',
user: '****',
password: "****",
database: 'restaurants'
});
connection.connect();
// all environments
app.set('port', process.env.PORT || 1235);
app.use(express.static(__dirname + '/public/images'));
app.get('/DescriptionSortedRating/',function(request,response){
var name_of_restaurants;
async.series( [
// Get the first table contents
function ( callback ) {
connection.query('SELECT * FROM restaurants ORDER BY restaurantRATING', function(err, rows, fields)
{
console.log('Connection result error '+err);
name_of_restaurants = rows;
callback();
});
}
// Send the response
], function ( error, results ) {
response.json({
'restaurants' : name_of_restaurants
});
} );
} );
http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});
上記のJSONと同等のXML応答を作成するにはどうすればよいですか?
Npmで利用可能なXMLライブラリをいくつでも使用できます。以下に、単純な名前の " xml "ライブラリを使用した例を示します。
var xml = require('xml');
response.set('Content-Type', 'text/xml');
response.send(xml(name_of_restaurants));
JavaScriptオブジェクトをXMLに変換する方法の説明については、モジュールのドキュメントを参照してください。特定のXML形式で返されるものが必要な場合は、もちろん、さらに作業が必要になります。
これの更新として、res.setは同じ結果をもたらさないので、res.typeを代わりに使用する必要があるように見えます。
res.type('application/xml');
詳細については、 APIリファレンス を参照してください。