使用app.get调用错误端点时如何处理?

Posted

技术标签:

【中文标题】使用app.get调用错误端点时如何处理?【英文标题】:How to deal when calling a wrong endpoint using app.get? 【发布时间】:2019-03-04 06:19:33 【问题描述】:

我定义了几个端点。我正在对所有这些进行自动化处理,此外还定义了一些我应该得到错误的场景。

例如,端点之一是:'/v1/templates'。

现在,想象一下,用户键入了“/v1/templatess”。

我正在使用 app.get 来处理这样的已知端点:

app.get(
    '/v1/contents/:template_component_content_id',
    controllers.template_component_contents.getById.bind(controllers.template_component_contents)
);

有没有办法说如果调用的端点与任何 app.get() 选项不匹配,则抛出错误?

提前致谢。

【问题讨论】:

【参考方案1】:

app.js 写在下面你需要routes的地方

const express = require('express');
const app = express();

app.use((req, res, next)=>
  res.status(404).send(message:"Not Found");
);

如果你想从后端显示一些页面

app.use((req, res, next)=>
  res.render('./path/to/file');
);

更多参考请查看这个 github 项目

nodejs_boiler_plate/app.js

【讨论】:

【参考方案2】:

您可以使用 express 处理程序处理 404。

在您的主要 express 文件(可能是 index.js 或 app.js)中,只需在路由中间件之后添加以下内容。

app.use("/v1", your_router);

// catch 404 and forward to error handler
app.use((request, response, next) => 
  // Access response variable and handle it
  // response.status(404).send("Your page is not found"))
  // or
  // res.render("home")
);

你也可以通过额外的路线来实现这一点

app.get('*', (req, res) => )

但不建议这样做,因为它是正则表达式操作,并且 express 已经提供了内置处理程序来处理 404 路由。

【讨论】:

【参考方案3】:

试试类似的东西:

app.get('*', (req, res) => 
  res.send(error: "No routes matched");
  res.end();
)

将此代码添加为您的路线中的最后一条路线,我希望这样做会起到神奇的作用。

【讨论】:

以上是关于使用app.get调用错误端点时如何处理?的主要内容,如果未能解决你的问题,请参考以下文章

在 Sequelize 中使用 .create(...) 方法时如何处理错误

使用 WCF 和 DefaultCredentials 时如何处理密码更改?

合并发布者时如何处理错误?

执行 Flux.map() 时如何处理错误

使用 Kafka Streams DSL 时如何处理错误和不提交

使用to_csv时如何处理pandas内存错误?