Node.js 如何为express.js中的无效路径发送自定义消息?

Node.js 如何为express.js中的无效路径发送自定义消息?,node.js,express,Node.js,Express,express.js中的以下方法 var express = require('express'), app = express(); app.get('/users', function (req, res) { //Some logic } 可以使用URL访问 http://<host-name>:<port>/users http://:/users 如果路径无效,例如http://:/invalid path,我将得到以下响应 无法获取/删除无效路径

express.js中的以下方法

var express = require('express'), app = express();
app.get('/users', function (req, res) {
    //Some logic
}
可以使用URL访问

http://<host-name>:<port>/users
http://:/users
如果路径无效,例如http://:/invalid path,我将得到以下响应

无法获取/删除无效路径


在express.js中是否有方法为无效路径发送自定义消息

实现这一目标的一个方法是使用app.all e、 g


实现这一目标的一种方法是使用app.all e、 g


是的,如果我没弄错的话,你说的是404找不到页面

使用express执行此操作的方式实际上非常简单。Express按定义的顺序匹配路由,这意味着,如果您尝试访问未定义的路由,它将尝试以前的所有路由,直到没有更多路由为止。因此,您需要定义一个路由来捕获任何尚未匹配的请求

怎么做

很简单,由于定义了最后一条路由(因此在该路由之后的代码中没有定义更多路由),您可以定义以下路由:

app.all(function(req, res, next) {
    // Your 404 logic here
}

是的,如果我没弄错的话,你说的是404找不到页面

使用express执行此操作的方式实际上非常简单。Express按定义的顺序匹配路由,这意味着,如果您尝试访问未定义的路由,它将尝试以前的所有路由,直到没有更多路由为止。因此,您需要定义一个路由来捕获任何尚未匹配的请求

怎么做

很简单,由于定义了最后一条路由(因此在该路由之后的代码中没有定义更多路由),您可以定义以下路由:

app.all(function(req, res, next) {
    // Your 404 logic here
}

您可以创建一个middleare错误,如下所示

/中间件/error.js


“未找到”可以是带有“未找到”状态消息的特定页面。

您可以创建一个middleare错误,如下所示

/中间件/error.js


not found可以是带有not found status消息的特定页面。

在路由之后,您需要捕获所有404(任何路由都不提供的URL),然后根据/path制作一些用于错误处理的中间件:

// catch 404 and forward to error handler
app.use(function (req, res, next) {
    var err = new Error('Not Found');
    err.status = 404;
    next(err);
});

// error handlers
app.use('/api', function (err, req, res, next) {
    res.status(err.status || 500);
    res.json({
        message: err.message,
        error: err
    })
});

app.use(function (err, req, res, next) {
    res.status(err.status || 500);
    res.render('error', {
        message: err.message,
        error: err
    });
});
我制作了一个自定义错误处理程序,它显示了一个自定义错误页面(您可以在/views/error.jade中修改模板),而对于以/api(/api/something等)开头的请求,我返回一条json错误消息

这是/views/error.jade:

扩展布局

block content
  h1= message
  h2= error.status
  pre #{error.stack}

在路由之后,您需要捕获所有404(任何路由都不提供URL),然后根据/path制作一些用于错误处理的中间件:

// catch 404 and forward to error handler
app.use(function (req, res, next) {
    var err = new Error('Not Found');
    err.status = 404;
    next(err);
});

// error handlers
app.use('/api', function (err, req, res, next) {
    res.status(err.status || 500);
    res.json({
        message: err.message,
        error: err
    })
});

app.use(function (err, req, res, next) {
    res.status(err.status || 500);
    res.render('error', {
        message: err.message,
        error: err
    });
});
我制作了一个自定义错误处理程序,它显示了一个自定义错误页面(您可以在/views/error.jade中修改模板),而对于以/api(/api/something等)开头的请求,我返回一条json错误消息

这是/views/error.jade:

扩展布局

block content
  h1= message
  h2= error.status
  pre #{error.stack}

谢谢这很有帮助,谢谢。这有帮助。