英文:
Forwarding a request from Nodejs
问题
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');
};
英文:
I need to forward / redirect request received by nodejs endpoint to a .net 7 web API end point. Nodejs endpoint is triggered by an external party and it receives the request as expected. the problem is redirecting / forwarding from nodejs to .NET web api endpoint, its not getting triggered.
This is my code block.
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');
};
答案1
得分: 1
你正在使用res.redirect,你需要代理请求到.NET 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 {
// 代理请求到.NET API
const apiResponse = await axios({
method: req.method, // 保持相同的方法
url: endPoint,
headers: req.headers, // 保持相同的头部
data: req.body, // 保持相同的请求体
});
// 将来自.NET API的响应发送回原始调用方
res.status(apiResponse.status).json(apiResponse.data);
} catch (error) {
// 错误处理:发送500状态码和错误消息
res.status(500).send(error.message);
}
};
希望这个翻译对你有帮助。
英文:
You are using res.redirect, you have to proxy the request to the.NET API endpoint. Make a new request from your Node.js server to the .NET API endpoint, and then send the response from that request back to the original caller. This can be done using libraries like 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);
}
};
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论