node中間層轉發請求


前台頁面:

  $.get("/api/hello?name=leyi",function(rps){
       console.info(rps);
  });

node中間層(比如匹配api開頭的所有請求):

var express = require('express');
var qs = require("qs")
var http = require("http");
var querystring = require('querystring');

app.all(/\/api/, function(req, res) {
    let strData = qs.stringify(req.body); //請求體中的數據(比如post提交的數據)
    let options = {
        host: 'localhost', //后台請求地址
        port: 8081,
        path: req.url.substr(4),
        method: 'POST',
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded',
            'Content-Length': strData.length
        }
    };
    options.headers = Object.assign(options.headers, req.headers); //帶上客戶端請求頭(包含cookie之類的東西)
    let httpRequest = http.request(options, function(res) {
        console.log("statusCode: ", res.statusCode);
        console.log("headers: ", res.headers);
        let _data = '';
        res.on('data', function(chunk) {
            _data += chunk;
        });
        res.on('end', function() {
            sendData(_data);
        });
    });
    httpRequest.write(strData); //寫入數據到請求主體
    httpRequest.end();

    function sendData(data) {
        res.send(data);
    }
});

node后台:

var express = require('express');
var app = express();
var querystring=require("querystring");

app.post("/hello", function(req, res) {
    console.info("req.headers", req.headers); //node中間層帶來的請求頭
    console.info("req.query", req.query); //url上的查詢參數
    let data = '';
    req.on('data', function(chunk) {
        data += chunk;
    });
    req.on('end', function() {
        data = decodeURI(data);
        console.log("data", data);
        let dataObject = querystring.parse(data);
        console.log("dataObject", dataObject);
    });
    res.json({ "result": "hello world!" });
});


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM