在 Express 中使用中间件导致 404
Using Middle ware cause 404 in Express
我正在使用 express.js 和 Express 路由器。我的文件如下所示:
./路由器
-> api.js
./控制器
-> ApiController.js
在 api.js
中,我将请求发送到 ApiController。它看起来像这样:
router.get('/',ApiController.home)
控制器内部看起来像这样:
exports.home = (req,res,next)=>{res.send('hello') }
我有这样一个中间件:
function authenticate(req, res, next) {
//Some functions here
next()
})
}
如果我更改我的控制器并像这样添加中间件:
exports.home = authenticate ,(req,res)=>{res.send('hello') }
我会得到 404。知道它有什么问题吗?
您想在声明 get 路由器时添加中间件
router.get('/', authenticate, ApiController.home)
如果你做你正在做的事情
exports.home = authenticate ,(req,res)=>{res.send('hello') }
这基本上是说 exports.home = 验证并忽略具有 res.send 的函数。因此,当您点击 exports.home 函数时,它将只有 next() 而不是 res.send 给客户端。下一个只会让请求通过,它会命中最后一个错误处理程序,它会返回一个 404,因为从未收到过响应。
我正在使用 express.js 和 Express 路由器。我的文件如下所示:
./路由器 -> api.js
./控制器 -> ApiController.js
在 api.js
中,我将请求发送到 ApiController。它看起来像这样:
router.get('/',ApiController.home)
控制器内部看起来像这样:
exports.home = (req,res,next)=>{res.send('hello') }
我有这样一个中间件:
function authenticate(req, res, next) {
//Some functions here
next()
})
}
如果我更改我的控制器并像这样添加中间件:
exports.home = authenticate ,(req,res)=>{res.send('hello') }
我会得到 404。知道它有什么问题吗?
您想在声明 get 路由器时添加中间件
router.get('/', authenticate, ApiController.home)
如果你做你正在做的事情
exports.home = authenticate ,(req,res)=>{res.send('hello') }
这基本上是说 exports.home = 验证并忽略具有 res.send 的函数。因此,当您点击 exports.home 函数时,它将只有 next() 而不是 res.send 给客户端。下一个只会让请求通过,它会命中最后一个错误处理程序,它会返回一个 404,因为从未收到过响应。