node.js - 我可以从快速请求处理程序或中间件发出获取请求吗?

标签 node.js express fetch

假设我有一个带有 /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/

相关文章:

javascript - 仅使用几个关键字在 mongodb 中搜索

node.js - 我应该使用 Express static dirname 还是使用 Node.js 作为远程服务器?

javascript - 如何在node.js中指定模块路径

javascript - 其他人如何连接到我的 Websocket 服务器?

node.js - react : rendering content (view) according to requested route (ExpressJS)

mysql - 用mysql fetch array 显示信息?

vue.js - 在 vuejs 中使用 vuex (dispatch) 出现错误 422

json - 在 Node.js 中从 URL 检索 JSON 的最佳方法是什么

node.js - 如何在sequelize模型中插入外键

python - 如何在批处理/Python中编辑XML文件