node.js - nodejs - ¿Cómo puedo responder en XML usando ExpressJS?
npm mysql (2)
Tengo un código simple que da una respuesta JSON para una ruta específica. Aquí está mi código actual:
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''));
});
¿Cómo puedo hacer una respuesta XML equivalente al JSON anterior?
Como una actualización de esto, parece que res.type debería usarse en lugar de res.set no da los mismos resultados.
res.type(''application/xml'');
Más información se puede encontrar en la referencia de la API .
Puede utilizar cualquier número de las bibliotecas XML disponibles en npm. Aquí hay un ejemplo usando la biblioteca " xml " de nombre simple:
var xml = require(''xml'');
response.set(''Content-Type'', ''text/xml'');
response.send(xml(name_of_restaurants));
Consulte la documentación del módulo para obtener una descripción de cómo convierte los objetos de JavaScript a XML. Si necesita que le devuelvan cosas en un formato XML específico, tendrá más trabajo que hacer, por supuesto.