假设我有一个带有 /api/load-post
端点的 Express api。这是由 loadPostHandler: RequestHandler
index.ts
const app = express();
app.get("/api/load-post", loadPostHandler);
loadPostHandler.ts
我可以从该处理程序发出提取请求吗?
import fetch from "cross-fetch";
export const loadPostHandler: RequestHandler = async (req, res) => {
// HANDLE BLOGPOST LOAD
res.json({ blogPost: blogPostData }) // RES JSON THE BLOGPOST DATA
await fetch("/api/updateViewcount?id=POST_ID"); // MAKE A FETCH REQUEST
};
这是人们通常做的事情吗?或者这是一种反模式?不确定这是否有效。
最佳答案
简短回答
是的,您通常可以在 api 调用处理程序中发出请求,这取决于该 api 的要求。
更长的版本
从您的示例来看:您想要更新 View 计数,并且由于没有使用它的响应,因此您不需要等待响应。你可以直接开火,无需等待。 从结构上讲,更好的做法是将其移动到进行实际调用的单独函数,或者触发事件并在不同的位置处理它。 此外,看起来您正在调用同一个 api 服务器,在这种情况下,最好只调用函数而不是 api 调用。
const updatePostViewcount = postId => {
// HANDLE BLOGPOST VIEWCOUNT UPDATE
}
export const loadPostHandler: RequestHandler = async (req, res) => {
// HANDLE BLOGPOST LOAD
// no await here because we don't need the response
// it will still run asynchronously
updatePostViewcount(POST_ID);
res.json({ blogPost: blogPostData }) // RES JSON THE BLOGPOST DATA
};
关于node.js - 我可以从快速请求处理程序或中间件发出获取请求吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66087766/