Прокси-сервер NodeJS с REST и параметрами

#node.js #amazon-web-services #proxy #axios #node-modules

#node.js #amazon-веб-сервисы #прокси #axios #модули узлов

Вопрос:

Иметь сервер 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);

});
 

введите описание изображения здесь

Ответ №1:

Вам необходимо использовать промежуточное программное обеспечение синтаксического анализатора для получения данных post от клиента, данные будут сохранены в 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())
 

Ответ №2:

Это решение, которое сработало для меня.

 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);