Приложение Nuxt, использующее Express, не допустит попадания POST-маршрутов извне приложения - PullRequest
0 голосов
/ 02 июня 2018

Фон

У меня есть приложение NUXT, которое визуализирует шаблоны Vue, как и следовало ожидать.У меня есть необходимость использовать некоторые экспресс-маршруты в приложении со стороны внешних приложений.

Я могу нажать GET-маршруты из внешних приложений, но POST-запросы не выполняются с ошибкой 404.

Пример

Экспресс

Это работает

router.get('/test/get', (req, res, next) => {
  res.json({ message: "Global PDF Generator is configured correctly", status: "operational" })
});

Это не с 404

router.post('/test/post', (req, res, next) => {
  res.json({ message: "Global PDF Generator is configured correctly", status: "operational" })
});

Внутри приложения Nuxt и в любом изкомпоненты vue, которые я могу использовать для POST-маршрутов, вот так:

fetch('api/v1/pdf', { method: 'POST' }

Но если мы попытаемся сделать что-то подобное, то это не удастся,

fetch('localhost:3000/api/v1/pdf', { method: 'POST' }

Второй пример важен, потому чтоВот как я должен был достичь конечной точки в этом приложении из внешнего приложения.

Я не могу понять, почему GET-запросы работают и не получают 404, в то время как POST-запросы продолжают получать 404 из внешних приложений.

Вопрос

Как я могу создать внешнюю доступную конечную точку Express POST в моем приложении NUXT, чтобы она была напрямую доступна из внешнего источника?

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

Это потому, что когда приложение NuxtJs на производстве, оно видит только страницу routes, а не сервер route.Вы должны использовать NuxtJs serverMiddleware.Вы можете найти его здесь от NuxtJs API

0 голосов
/ 02 июня 2018

Не в качестве ответа, а просто для того, чтобы я мог отформатировать вещи и продемонстрировать, что что-то еще должно происходить.Этот минимальный пример прекрасно работает для меня.

vue init nuxt-community/express-template sample_post
cd sample_post
npm install

Измените api / router / users.js, добавив почтовый маршрут:

router.post('/test', function(req, res, next) {
   res.json(message: 'hello');
});

Запустите службу:

npm run dev

Убедитесь, что он успешно возвращает сообщение из внешнего запроса:

curl -X POST http://localhost:3000/api/test
{"message":"hello"}

Так что где-то должно происходить что-то еще.

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