Почему мой маршрут не найден, если я использую /: var / action - PullRequest
0 голосов
/ 16 апреля 2019

Мой app.js имеет следующее:

const express = require('express');
const app = express();

const userRoutes = require('./api/routes/users');

// middleware - takes info passed in through the body
app.use(express.urlencoded({extended: false}));
app.use(express.json());

// middleware - adds headers to allow CORS.
app.use((req, res, next) => {
  res.header('Access-Control-Allow-Origin', '*');
  res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept, Authorization');
  if(req.method === 'OPTIONS') {
    res.header('Access-Control-Allow-Methods', 'PUT, POST, DELETE, GET');
    res.status(200).json({});
  }
  next();
});

// middleware - filter all requests for users to the userRoutes
app.use('/api/v1/users', userRoutes);

// middleware - catch any requests that aren't caught by previous filters
app.use((req, res, next) => {
  const error = new Error('No route found');
  error.status = 404;
  next(error);
});

// middleware - catch any errors that happen other places in the application (DB, etc.)
app.use((error, req, res, next) => {
  res.status(error.status || 500);
  res.json({
    error: { message: error.message }
  });
});

module.exports = app;

и мой userRoutes выглядит так:

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

const userController = require('../controllers/userController');
const gtrController = require('../controllers/gtrController');
const DAL = require('../DAL/dal');

router.get('/:userName', (req, res, next) => {
  userController.getUser(req.params.userName, DAL.findOne, gtrController.getUser)
    .then((result) => {
      res.status(200).json(result);
    })
    .catch((error) => {
      console.log(error);
      res.status(500).json({ Error: { message: error }})
    });
});

router.get('/:userName/games', (req, res, next) => {
  userController.getUserStuff(req.params.userName, () => {}, gtrController.getUserStuff)
    .then((result) => {
      res.status(200).json(result);
    })
    .catch((error) => {
      console.log(error);
      res.status(500).json({ Error: { message: error }})
    });
});module.exports = router;

Если я проверяю / и / имя пользователя в Почтальоне, я получаю 200, и все в порядке. Однако, когда я пытаюсь / username / games, я получаю 404. Я не уверен, почему это не поражает мои userRoutes. Я предполагаю, что это мой app.use, но я не нахожу никакой соответствующей документации.

Спасибо большое.

1 Ответ

0 голосов
/ 16 апреля 2019

Разобрался, я думаю.Мой router.get('/:userName/games) должен быть router.get('/:userName\/games')

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...