【发布时间】:2019-07-25 03:27:39
【问题描述】:
在某些情况下,当在我的节点/express 服务器上命中特定路由时,我想向 API 发出请求并将该响应直接返回给客户端。我关注了这个堆栈溢出帖子:Send response from server side axios request to React/Redux app
创建这个:
router.use('/', async (req, res) => {
const apiUrl = `https://assets.scratch.mit.edu${req.url}`;
console.log(apiUrl);
const scratchResponse = await axios.get(apiUrl);
try {
res.send(scratchResponse);
console.log('worked!', apiUrl);
} catch (error) {
console.log('error in assets get request', apiUrl, error);
res.sendStatus(500);
}
});
这适用于某些请求,但会因错误而中断其他请求:
TypeError: Converting circular structure to JSON
根据此堆栈溢出帖子的建议:JSON.stringify, avoid TypeError: Converting circular structure to JSON
我已尝试通过添加此导入来使用 npm flatted 库:
const { stringify } = require('flatted/cjs');
在我回复之前进行字符串化:
res.send(stringify(scratchResponse));
但似乎正在删除一些对客户端至关重要的信息(客户端中断并说它缺少属性)。
是否可以直接发送我从 API 收到的响应?
【问题讨论】:
-
stackoverflow.com/questions/40684438/… 你可以尝试专注于返回的“错误”的签名,但是它的装饰可能会影响你的类型处理......