Экспресс-маршрутизация обслуживает контент angularjs, но не api - PullRequest
0 голосов
/ 14 мая 2018

Я использую nodejs / express в качестве серверной части моего веб-приложения.

Другой разработчик, больше не работающий со мной, объединил пакет angularjs с серверным приложением, чтобы при запуске «index.js» он одновременно обслуживал содержимое внешнего интерфейса и API на стороне сервера. Это должно было улучшить медленную загрузку.

После того, как серверная часть nodejs обслуживает интерфейсную папку ../dist, у меня возникла проблема, которую я пытаюсь разрешить при маршрутизации.

Существует маршрут, который я закомментировал на текущем маршруте, как показано ниже.

Когда это закомментировано, я могу поразить все конечные точки API, но он не будет обслуживать содержимое angularjs из папки ../dist.

Когда маршрут catch all не закомментирован, он обслуживает мой угловой контент, но не может достичь ни одной из моих конечных точек API. Все вызовы конечных точек API возвращают 200, но никогда не достигают конечных точек API.

enter image description here

1 Ответ

0 голосов
/ 14 мая 2018

Порядок имеет значение при определении маршрутов.Если ваша первая запись универсальна, она буквально перехватит все, даже запросы на /api.Поэтому поместите свой универсальный элемент как самую последнюю запись:

app.get("/api", function(req,res) {
  res.json({
    message: "Hello World!"
  });
});

app.get("*", function(req,res) {
  res.sendFile(__dirname + "/dist/index.html");
});

Также целесообразно явно объявить свой маршрут SPA, даже если у вас уже есть универсальный вариант:

app.get("/", function(req,res) {
  res.sendFile(__dirname + "/dist/index.html");
});

app.get("/api", function(req,res) {
  res.json({
    message: "Hello World!"
  });
});
app.get("*", function(req,res) {
  res.sendFile(__dirname + "/dist/index.html");
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...