簡體   English   中英

帶有 REST 和參數的 NodeJS 代理

[英]NodeJS proxy with REST and parameters

讓 NodeJS 服務器充當私有服務器的網關。 一個簡單的 REST 端點的工作方式如下。 但是,我正在尋求一種解決方案,該解決方案也將通過 Axios 可能發送的任何參數。

Axios 調用代理服務器示例

   return axios
      .post(http://proxy.server + "/company/add_company", { address:"123 main", phone:"555-1234" })

代理服務器

const caller = async (response, rest, params) => {
    try {

        params = JSON.parse(params);
        const result = await axios.post('http://10.0.0.0'+ rest, { params } );

        res.status(200).json({
            success: true,
            result: result.data
        })
    } catch (err) {
        res.status(500).json({
            success: false,
            err
        })
    }
}

app.all("/", (request, response) => {

     let params = request.body // <= not working
     let rest = request.url;  //  <= working example =>  /users/235
     caller(response, rest, params);

});

在此處輸入圖片說明

您需要使用解析器中間件從客戶端接收發布數據,數據將存儲在 request.body 中。 例子:

const express = require('express');
const app = express();

// parse application/x-www-form-urlencoded
app.use(express.urlencoded({ extended: false }))

// parse application/json
app.use(express.json())

這是對我有用的解決方案。

const httpProxy = require('http-proxy');

const express = require('express');
const { createProxyMiddleware } = require('http-proxy-middleware');
 
const app = express();

app.use('/', createProxyMiddleware({ target: 'http://10.0.0.0' , changeOrigin: true }));
app.listen(5000);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM