gpt4 book ai didi

javascript - 修改express.js中的res对象

转载 作者:行者123 更新时间:2023-12-03 10:32:45 28 4
gpt4 key购买 nike

我有一个关于我的 SPA 网站后端设计的想法。我将实现它,以便以“/api/”开头的路由将仅返回 JSON 中的相关数据。所有其他路线都会导致整页加载。

现在我的想法是在中间件中执行此操作,如下所示:

app.use(function(req, res, next() ){
if(req.path.split("/")[0]=="api"){
res.send = res.json;
//or other custom response-function, I see many possibilities here!
}else{
...
}
});
app.use(routes);

现在,我的问题是,这会全局修改 res 对象,还是仅针对当前请求(此 res 实例)?我的理解是只是当前的被修改了,据我所知这是真的,但是 Node 速度非常快,所以我自己测试有点困难(一个人只能在一毫秒内刷新这么多选项卡!)任何人都知道一定?

编辑:很多回答我问题的人都问我为什么要这样做。重点是抽象服务器对来自已加载前端的客户端以及需要完整页面的客户端的请求所做的操作。我还在考虑使用相同的方法添加加载部分模板的路线的可能性。通过修改 res.send 我的 Controller 可以担心获取数据并将其发送,res.send 已经知道是否需要涉及一些渲染。再想一想,虽然 res.send 本身确实很有用,但我可能会修改 res 以使用 res.answer 或类似的东西。(也可以减少困惑!)

最佳答案

我决定以此作为答案,因为有时 future 的读者不会阅读评论。

1) 您可以根据自己的喜好修改 res 及其成员。您正在操作响应的实例,而不是其原型(prototype)。没有“全局”资源,但它确实有一个原型(prototype)。

2) 阅读 the documentation会在这里得到返回。如果传递对象或数组,res.send 的操作与 res.json 相同。也就是说,在典型情况下,您的其余代码的运行方式与您没有使用 res.send() 的情况没有什么不同,但会让某人感到困惑(也许你)几个月或几年后。

关于javascript - 修改express.js中的res对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29136742/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com