从Nodejs转发请求

z9smfwbn  于 2023-05-22  发布在  Node.js
关注(0)|答案(1)|浏览(195)

我需要将nodejs端点收到的请求转发/重定向到.net 7 Web API端点。Nodejs端点由外部方触发,并按预期接收请求。问题是从nodejs重定向/转发到.NET Web API端点,它没有被触发。
这是我的代码块。

exports.rerouteIncomingEmail = async (req, res)  => {

    var to = extractRequestHeaders(req.headers, 'x-recipient');
    var endPoint = await services.getPushEndpointFromEmailList(to,req.app.locals.db);

    endPoint ? res.redirect(308,endPoint) : res.send(200,'endpoint not found');    
};
m1m5dgzv

m1m5dgzv1#

如果您使用res.redirect,则必须将请求代理到. API端点。从Node.js服务器向.NET API端点发出新请求,然后将该请求的响应发送回原始调用者。这可以使用像axios这样的库来完成。

const axios = require('axios');

exports.rerouteIncomingEmail = async (req, res) => {
    var to = extractRequestHeaders(req.headers, 'x-recipient');
    var endPoint = await services.getPushEndpointFromEmailList(to,req.app.locals.db);
  
    if (!endPoint) {
        res.status(200).send('endpoint not found');
        return;
    }

    try {
        // Proxy the request to the .NET API
        const apiResponse = await axios({
            method: req.method, // Keep the same method
            url: endPoint,
            headers: req.headers, // Keep the same headers
            data: req.body, // Keep the same body
        });
    
        // Send back the response from the .NET API to the original caller
        res.status(apiResponse.status).json(apiResponse.data);
    } catch (error) {
        // Error handling: Send a 500 status code and the error message
        res.status(500).send(error.message);
    }
};

相关问题