使用Express的Nuxt应用程序不允许在应用程序

时间:2018-06-02 01:39:32

标签: javascript node.js express vue.js nuxt.js

背景

我有一个NUXT应用程序,可以像您期望的那样呈现vue模板。我需要从外部应用程序客户端点击应用程序中的一些Express路由。

我可以从外部应用程序中获取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' }

第二个例子很重要,因为我不得不从外部应用程序中获取此应用程序的终点。

我无法理解的是,当POST请求继续从外部应用程序获得404时,GET请求工作原因并且没有获得404。

问题

如何在NUXT应用程序中创建一个可从外部访问的Express POST端点,以便可以从外部源直接访问它?

2 个答案:

答案 0 :(得分:1)

不是答案,只是因为我可以格式化事物并证明其他事情必须继续下去。这个最小的例子对我来说很好。

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

修改api / routes / 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"}

所以别的东西必须在某个地方进行。

答案 1 :(得分:0)

这是因为在生产中的NuxtJs应用程序仅看到页面routes而不是服务器route。您应该使用NuxtJs serverMiddleware。您可以从NuxtJs API中找到here