【问题标题】:Nodejs express: how to use common function needed by different routes logicNodejs express:如何使用不同路由逻辑所需的常用功能
【发布时间】:2018-06-16 11:45:12
【问题描述】:

如何在 nodejs 中添加使用 express 构建的不同路由可以使用的常用方法/函数?

我创建了一个 nodejs 服务器,它当前提供 3 个 API。例如:

/cars
/cars/:id
/cars/:id/sellers

所有这 3 个 API 从另一个外部 API 检索数据。所以,我已经有一些在所有这些路线中都相似的代码。例如,向外部 API 端点发送 GET 请求,但参数不同。

对于我上面列表中的最后一个 API,我想对其进行增强,以便它采用可选参数(姓氏、名字)。我可以有另一个这样的 API 端点:

/cars/:id/sellers/:lastname&:firstname

但在这种情况下,此 API 的逻辑与我列表中的第三个 API 几乎相同。

我想创建一些实用函数,我可以使用不同的参数从我的任何 API 路由中调用它们。我不太确定要这样做或从哪里开始。

有什么建议吗?

【问题讨论】:

  • 若要我们提供任何具体建议,您必须向我们展示您正在使用的代码,您想将这些代码分解为常用功能。通用的答案是,您找出路由之间的共同功能,创建一个函数来执行该操作,然后从您的每个路由中调用该函数。路由与任何其他 Javascript 代码没有什么不同。由于您正在调用外部 API,因此您的通用函数可能会返回一个 Promise,让调用者知道它何时完成或是否有错误。

标签: node.js express routes


【解决方案1】:
app.use((req, res, next) => {
  //req.someParam
  //your logic
  next();
});

您可以使用这样的中间件,确保在定义路由后添加它,它将作为路由中的通用中间件工作

 router.post('/cars', (req, res, next) => {
    // if() some condition
    req.someParam = "param";
    next();
 });

【讨论】:

    猜你喜欢
    • 2018-05-16
    • 1970-01-01
    • 2020-05-30
    • 1970-01-01
    • 2020-04-24
    • 1970-01-01
    • 1970-01-01
    • 2021-09-26
    • 1970-01-01
    相关资源
    最近更新 更多