使用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 时如何处理密码更改?