节点 - 简单的xml API请求

时间:2017-03-31 22:17:25

标签: node.js xml api express request

我正在使用最新的node.js(和express)对返回... XML ... Ugh> _>的网站进行API调用。

我已经浏览了网页并发现了一百万种不同的方式,但我不知道最新的,最新的/最好的方式来发出请求并在node / express中获得响应。

我尝试使用https://github.com/request/request并执行以下操作:

var sendJsonResponse = function(res, status, content) {
    res.status(status);
    res.json(content);
};

var token = request
    .get('some-website.com/api/stuff')
    .on('response', function(response) {
        console.log(response.statusCode);
        console.log(response.headers['content-type']);
    });

sendJsonResponse(res, 200, token);

console.log语句中,我得到200,然后是application/xml;charset=utf-8

但是在我的页面上,我没有得到我正在寻找的xml。有任何想法吗?我尝试使用https://github.com/Leonidas-from-XIV/node-xml2js尝试“解析”响应,以防节点无法处理xml响应,但无济于事。

var xml2js = require('xml2js');
parser.parseString(response, function(err, result) {
    console.dir(result);
    console.log('Done');
});

有关使用Node访问API并实际使用XML响应的任何帮助吗?

编辑答案

对于返回的xml内容的Node.js请求和xml解析:

var request = require('request');
var xml2js = require('xml2js');

var sendJsonResponse = function(res, status, content) {
    res.status(status);
    res.json(content);
};

/* GET XML Content*/
module.exports.dsRequest = function(req, res) {

    var parser = new xml2js.Parser();

    request('url_for_xml_request', function(error, response, body) {
        parser.parseString(body, function(err, result) {
            sendJsonResponse(res, 200, result);
        });

    });

};

1 个答案:

答案 0 :(得分:1)

我认为这会有效,因为请求是 async ,您应该写如下:

 var sendJsonResponse = function(res, status, content) {
      res.status(status);
      res.json(content);
};

 request.get('http://some-website.com/api/stuff', function (err,response, body) {
       sendJsonResponse(res, 200, body);
});