0

一般来说,我是表达和节点的新手,我有两个具有相同路径但方法不同的路由处理程序。我正在使用express.router(),并建议我像这样链接路由处理程序,但我得到 404 Not found for GET /status 但是如果我删除我的中间件,这些路线就可以工作.all(verifytoken)

statusRouter.route('/status')
  .all(verifyToken)
  .get(status.get)
  .post(status.new);

/状态控制器

 get: 
        (req, res) => {
          Post.find({}, (err, posts) => {
              if(err) throw err;

              if(posts){
                  console.log(posts)
                  res.json({message: 'ok'})
              } 
          })
        },
   new: (req, res) => {
       // i omitted the code for simplicity
   }

/中间件

    const verifyToken = (req, res, next) => {
   const token = req.headers.authorization.slice(7 - req.headers.authorization.length);
        jwt.verify(token, process.env.KEY1, function(err, decoded) {
            if(err) {
                res.status(401).json({
                    message: "You're session has expired, please login again.",
                    type: 'error',
                    code: 401
                })
            }

            if(decoded){
                next();
            } 
        })
    }
4

1 回答 1

0

您需要将其放入您的 express 应用程序中,因为它只是一个路由器并且尚未集成到您的 express 应用程序中,这就是它返回 404 的原因,因为它仍然找不到您的路由器。

const express = require('express')
const router = express.Router();
const app = express();

app.use(yourRouter);
于 2018-04-11T05:02:21.333 回答