我定义了几个端点。我正在对所有这些进行自动化,此外还定义了一些我应该得到错误的方案。
例如,端点之一是:'/ 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()选项都不匹配,则抛出错误?
谢谢。
答案 0 :(得分:3)
您可以使用快速处理程序处理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) => {})
但这是不可取的,因为它是正则表达式操作,并且表示已经提供了内置处理程序来处理404路由。
答案 1 :(得分:2)
在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项目
答案 2 :(得分:1)
尝试类似的东西
app.get('*', (req, res) => {
res.send({error: "No routes matched"});
res.end();
})
将此代码添加为您路线中的最后一条路线,我希望如此会成功。