nodejs封装http请求

在nodejs中使用http请求,我们可以做很多事,比如对接第三方接口,数据采集,测试接口,等等。

var http = require("http");
var urlUtil = require('url');
var file = require("./file");
var querystring = require('querystring');
var HttpUtil = {
    //get提交url,返回html数据
    get : function(url,success,error){
        http.get(url,function(res){
            var result = "";
            res.setEncoding("UTF-8");
            res.on("data",function(data){
                result += data;
            });
            res.on('error',error);
            res.on('end',function(){
                success(result);
            });
        }).on('error',this.requestError);
    },
    post : function(hostname,port,path,body,acceptType,contentType,success,error){
        var bodyString = "";
        if(body!=null && contentType == "application/json"){
            bodyString = JSON.stringify(body);
        }
        else if(body!=null && contentType == "application/x-www-form-urlencoded"){
            bodyString = querystring.stringify(body);
        }
        var opts = {
            hostname : hostname,
            port : port,
            path : path,
            method: 'post',
            headers : {
                'Accept':acceptType,
                'Content-Type':contentType,
                'Content-Length':bodyString.length
            }
        }
 
        var req = http.request(opts,function(res){
            
            var result = "";
            res.setEncoding("UTF-8");
            res.on("data",function(data){
                result += data;
            });
            res.on('error',error);
            res.on('end',function(){
                success(result);
            });
 
        });
        req.on('error',this.requestError);
        file.writeInFile(req);
        req.write(bodyString);
        req.end();
    },
    //提交表单参数,并返回html内容
    postAndReturnHtml : function(url,body,success,error){
        var urlConfig = urlUtil.parse(url);
        var contentType = "application/x-www-form-urlencoded";
        var acceptType = "text/html";
        this.post(urlConfig.hostname,urlConfig.port,urlConfig.path,body,acceptType,contentType,success,this.responseError);
    },
    //get提交url参数,并返回json数据
    getAndReturnJson : function(url,success,error){
        this.get(url,function(data){
            var data = JSON.parse(data);
            success(data);
        },this.responseError(error));
    },
    //提交json参数,并返回json
    postAndReturnJson : function(url,body,success,error){
        var contentType = "application/json";
        var acceptType = "application/json";
        var urlConfig = urlUtil.parse(url);
        this.post(urlConfig.hostname,urlConfig.port,urlConfig.path,body,acceptType,contentType,function(data){
            var data = JSON.parse(data);
            success(data);
        },this.responseError(error));
    },
    requestError : function(error){
        console.log("请求失败--"+error.message);
    },
    responseError : function(error){
        return  error || function(e){
            console.log("响应失败--"+e.message);
        };
    }
}
 
module.exports = HttpUtil;
原文地址:https://www.cnblogs.com/miid/p/5289028.html