Код состояния 304 появляется во всех путях, кроме корневого пути в приложении Node Express - PullRequest
1 голос
/ 25 марта 2019

Я использовал Express для написания CRUD API для шаблона MVC.

И возникла проблема с применением шаблона к API CRUD.

Я использую индекс в качестве корневого пути. Однако одно и то же представление отображается независимо от ссылки в представлении индекса. Я получаю 304 status code за все обращения, кроме корневого пути.

Может ли кто-нибудь помочь мне найти источник этой проблемы.

app.js

...
const post = require("./routes/post");
app.use("/", (req, res) => {
  res.render("index");
});
app.use("/posts", post);
...

index.pug

doctype html
html
  head
    meta(charset='UTF-8')
  body
    a(href='/posts/new') new

маршруты

const postsController = require("../controller/posts_controller");
router.get("/new", postsController.post_new);

контроллер

exports.post_new = (req, res, next) => {
  res.render("new");
};

1 Ответ

2 голосов
/ 25 марта 2019

Экспресс проверяет маршруты в порядке, в котором они определены, и использует первый обработчик, маршрут которого совпадает с путем входящего запроса.Поскольку вы помещаете свой корневой маршрут ("/") сверху, и все маршруты соответствуют корневому маршруту (как минимум), он будет соответствовать и обрабатывать любой входящий запрос.

Чтобы это исправить, вы можете переместитьопределение вашего корневого маршрута до конца app.js.Например:

const post = require("./routes/post");
app.use("/posts", post);
app.use("/", (req, res) => {
  res.render("index");
});

Как правило, вы должны определять под-маршруты перед их родителями и определять маршруты со статическими значениями перед теми, у которых переменные находятся в тех же позициях.Таким образом, хороший пример заказа будет:

app.use("/posts/new", ...);
app.use("/posts/:id", ...);
app.use("/posts", ...);
app.use("/", ...);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...