node.js作爲請求中轉,解決前端頁面——node.js服務——後臺服務(Java、PHP)數據交互問題

重寫對應的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
    });
});
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章