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