app.get () не работает.связано с разницей между app.use и app.get в express.js - PullRequest
0 голосов
/ 14 февраля 2019
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');

var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));


app.use('/', indexRouter);
app.use('/users', usersRouter);

module.exports = app;

Я создал экспресс-генератор.Затем я попытался изменить app.use('/', indexRouter)app.get('/', indexRouter) и app.use('/users', usersRouter)app.get('/users', usersRouter).

Затем работал app.get('/', indexRouter) (можно нажать URL-адрес и получить информацию о странице).Но app.get('/users', usersRouter) НЕ работал.Это вернуло 404 (NotFoundError: Not Found).

Я уже читал этот вопрос Разница между app.use и app.get в express.js Но я не мог понять

./routes/index.js

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

 /* GET home page. */
 router.get('/', function(req, res, next) {
   res.render('index', { title: 'Express' });
 });

 module.exports = router;

. / Маршруты / пользователи

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

/* GET users listing. */
router.get('/', function(req, res, next) {
 res.send('respond with a resource');
});

module.exports = router;

1 Ответ

0 голосов
/ 14 февраля 2019

app.use предназначен для промежуточного программного обеспечения, а app.get предназначен для запросов GET.Промежуточные программы - это функции, которые вызываются перед контроллером.У вас может быть промежуточное программное обеспечение для проверки того, аутентифицирован ли пользователь или нет, и принять запрос пользователя или отклонить его.

Если у вас есть app.use('/', indexRouter), indexRouter будет вызываться для всех ваших запросов на всехваши маршруты.Это похоже на /*.

Если у вас есть app.use('/users', usersRouter), usersRouter будет вызываться для всех ваших запросов на всех маршрутах, начинающихся с /users.Это как /users*.

Вот как вы можете сделать запрос GET:

app.get('/users', (req, res) => res.status(200).send({
  message: 'It works.',
}));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...