Node JS上的HTTP请求回调

时间:2015-11-22 05:29:34

标签: javascript json node.js http

您好我正在尝试使用回调方法通过http获取响应。但我得到一个错误,说回调不是一个功能。

 module.exports.ipLookup = function (res, callback) {
    var http = require('http');
    var str = '';
    var options = {
        host: 'ip-api.com',
        port: 80,
        path: '/json/',
        method: 'POST'
    };
    var str= "";
    var req = http.request(options, function (res) {
        res.on('data', function (body) {
            str += body;
        });

        res.on('end', function () {
            callback(str);
        });
    });


    req.end();

    return str;

    }

id应该通过ip-api.com返回json api响应。如果有人可以帮助我,我们将不胜感激。

1 个答案:

答案 0 :(得分:4)

在另一个文件中,您需要加载该函数,以确保使用回调参数。请参阅下面的代码段

var Lookup = require('./ip');
Lookup.ipLookup(function (response) {

    console.log(response) // check if response is valid
})

您需要将导出的函数更改为仅接受一个参数,因为第一个参数未在函数体内使用,如此。

module.exports.ipLookup = function (callback) {

    var http = require('http');
    var str = '';
    var options = {
        host: 'ip-api.com',
        port: 80,
        path: '/json/',
        method: 'POST'
    };

    var req = http.request(options, function (res) {

         res.on('data', function (body) {
             str += body;
         });

         res.on('end', function () {
             return callback(str);
         });
    });
    req.end();

}