node.js作为请求中转,解决前端页面——node.js服务——后台服务(Java、PHP)数据交互问题

本文介绍了一个使用Node.js实现的HTTP请求处理模块,包括GET、POST、PUT和DELETE等请求方式。该模块能够通过配置化的地址和参数进行灵活的数据交互,并支持通过会话ID进行身份验证。

重写对应的get、put、post、delete请求;

var express = require('express');
var publicMethod = express.Router();
var http = require('http');
var api = express.Router();
var querystring = require('querystring');
var fs = require('fs');
var util = require('util');
var cookie = require('cookie');
var cookisParse = require('cookie-parser');
var config = require('../../config.js');

global.ipaddress = config.ipaddress;
global.port = config.port;

var obj = {
    http_post: function(post_content, address, token, func) {
        var opt_data = JSON.stringify(post_content);
        var options = {
            host: ipaddress,
            port: port,
            path: address,
            method: 'POST',
            headers: {
                'Content-Type': 'application/json',
                'Accept-Encoding': 'gzip, deflate',
                'Accept-Language': 'zh-cn',
                'Accept': '*/*',
                "token": token || ''
            }
        };
        var req = http.request(options, function(res) {
            var chunks = '';
            res.on('data', function(chunk) {
                chunks += chunk;
            });
            res.on('end', function() {
                func(chunks);
            });
        });
        req.on('error', function(err) {
            console.log('err:', err);
        });
        req.write(opt_data);
        req.end();
    },
    http_put: function(put_content, address, token, func) {
        var opt_data = JSON.stringify(put_content);
        var options = {
            host: ipaddress,
            port: port,
            path: address,
            method: 'PUT',
            headers: {
                'Content-Type': 'application/json',
                'Accept-Encoding': 'gzip, deflate',
                'Accept-Language': 'zh-cn',
                'Accept': '*/*',
                "token": token || ''
            }
        };
        var req = http.request(options, function(res) {
            var chunks = '';
            res.on('data', function(chunk) {
                chunks += chunk;
            });
            res.on('end', function() {
                func(chunks);
            });
        });

        req.on('error', function(err) {
            console.log('err:', err);
        });
        req.write(opt_data);
        req.end();
    },
    http_get: function(get_content, address, token, func) {
        var path = address;
        if (get_content == "" || get_content == undefined) {
            var path = address.trim();
        } else {
            var data = querystring.stringify(JSON.parse(get_content));
            var path = address + "?" + data;
        }
        var options = {
            hostname: ipaddress,
            port: port,
            path: path,
            method: 'GET',
            headers: {
                'Content-Type': 'application/json',
                'Accept-Encoding': 'gzip, deflate',
                'Accept-Language': 'zh-cn',
                'Accept': '*/*',
                "token": token || ''
            }
        };
        var req = http.request(options, function(res) {
            var chunks = '';
            res.setEncoding('utf8');
            res.on('data', function(chunk) {
                chunks += chunk;
            });
            res.on('end', function() {
                var data = null;
                func(chunks.toString());
            });
        });
        req.on('error', function(e) {
            console.log('错误:' + e.message);
        });
        req.end();
    },
    http_delete: function(post_content, address, token, func) {
        var opt_data = JSON.stringify(post_content);
        var options = {
            host: ipaddress,
            port: port,
            path: address,
            method: 'DELETE',
            headers: {
                'Content-Type': 'application/json',
                'Accept-Encoding': 'gzip, deflate',
                'Accept-Language': 'zh-cn',
                'Accept': '*/*',
                "token": token || ''
            }
        };
        var req = http.request(options, function(res) {
            var chunks = '';
            res.on('data', function(chunk) {
                chunks += chunk;
            });
            res.on('end', function() {
                func(chunks);
            });
        });
        req.on('error', function(err) {
            console.log('err:', err);
        });
        req.write(opt_data);
        req.end();
    }
}
module.exports = obj;

node.js 接收页面的ajax请求进行调用转发请求


var express, model, pc, httpMethod, formidable, fs, xlsx, querystring;

express = require('express');

model = require('model');

httpMethod = require('./publicMethod');

pc = express.Router();

formidable = require('formidable');

fs = require('fs');

xlsx = require('node-xlsx');

var cookisParse = require('cookie-parser');

querystring = require('querystring');

function parseSessionId(req) {
    var Cookies = {};
    var parts = "";
    if (req.headers.cookie != null) {
        req.headers.cookie.split(';').forEach(l => {
            parts = l.split('=');
            Cookies[parts[0].trim()] = (parts[1] || '').trim();
        });
    }
    return Cookies["sessionId"];
}

//post
pc.post('/postMethod', function(req, res) {
    httpMethod.http_post(req.body.data, req.body.method, parseSessionId(req), function(data) {
        res.send(data);
    });
});

//get
pc.get('/getMethod', function(req, res) {
    httpMethod.http_get(req.query.data, req.query.method, parseSessionId(req), function(data) {
        res.send(data);
    });
});

//delete
pc.delete('/deleteMethod', function(req, res) {
    httpMethod.http_delete(req.body.data, req.body.method, parseSessionId(req), function(data) {
        res.send(data);
    });
});

//put
pc.put('/putMethod', function(req, res) {
    httpMethod.http_put(req.body.data, req.body.method, parseSessionId(req), function(data) {
        res.send(data);
    });
});

//export
pc.get('/exportMethod', function(req, res) {
    if (req.query.data) {
        var query_data = querystring.stringify(JSON.parse(req.query.data));
        var down_file = "http://" + ipaddress + ':' + port + req.query.method + '?' + query_data + '&sessionId=' + parseSessionId(req);
    } else {
        var down_file = "http://" + ipaddress + ':' + port + req.query.method + '?' + '&sessionId=' + parseSessionId(req);
    }
    res.send({
        data: down_file
    });
});
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值