NodeJs的Get/Post请求

1、request.js源码

var http = require('http');
var config = require('../config');
var qs = require('querystring');
// post请求
exports.post = function(req, url, data, callback) {
    var content = qs.stringify(data);
    var options = {  
        hostname: config.server_host,  
        port: config.server_port,  
        path: url,  
        method: 'POST',  
        headers: req.headers
    };
    var req = http.request(options, function (res) {  
        res.setEncoding('utf8');
        var data = '';
        res.on('data', function (d) {
            data += d;
        }).on('end' , function(){
            data = JSON.parse(data);
            return callback(null, data);
        });
    }).on('error', function (e) {  
        console.log('problem with request: ' + e.message);  
    });
    req.write(content);  
    req.end(); 
};
// get请求
exports.get = function(req, url, data, callback) {
    var content = qs.stringify(data);
    var options = {  
       hostname: config.server_host,
        port: config.server_port,  
        path: url + '?' + content,  
        method: 'GET',
        headers: req.headers
    };
    var req = http.request(options, function (res) {  
        res.setEncoding('utf8');
        var data = '';
        res.on('data', function (d) {
            data += d;
        }).on('end', function() {
            data = JSON.parse(data);
            return callback(null, data);
        });
    }).on('error', function (e) {  
        console.log('problem with request: ' + e.message);  
    });  
      
    req.end();
};

2、调用方式

var User = require('../models/user');
var Request = require('../models/request');
var EventProxy = require('eventproxy');
var Log = require('log4js').getLogger("index");

exports.update = function(req, res, next) {
    //解决异步调用的问题
    var proxy = new EventProxy();
    proxy.fail(next);
    
    Request.get(req, 'url', {code: 12}, proxy.done('get', function(data) {
        //proxy.emit("get", data);
        return data;
    }));
    
    Request.get(req, 'url', {code: 12}, function(err, data) {
        proxy.emit("result", data);
    });
    Request.get(req, 'url', {code: 12}, proxy.done('three'));
    
    proxy.all("get", 'result', 'three', function (gets, result, three) {
        console.log(gets);
        console.log(result);
        console.log(three);
    });
}


你可能感兴趣的:(get,post,nodejs)