web-dev-qa-db-ja.com

ExpressJSを使用してXMLで応答するにはどうすればよいですか?

特定のルートに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応答を作成するにはどうすればよいですか?

24
Devrath

Npmで利用可能なXMLライブラリをいくつでも使用できます。以下に、単純な名前の " xml "ライブラリを使用した例を示します。

var xml = require('xml');

response.set('Content-Type', 'text/xml');
response.send(xml(name_of_restaurants));

JavaScriptオブジェクトをXMLに変換する方法の説明については、モジュールのドキュメントを参照してください。特定のXML形式で返されるものが必要な場合は、もちろん、さらに作業が必要になります。

39
Ethan Brown

これの更新として、res.setは同じ結果をもたらさないので、res.typeを代わりに使用する必要があるように見えます。

res.type('application/xml');

詳細については、 APIリファレンス を参照してください。

7