Javascript 使用Express won';不允许在应用程序外部命中POST路由

Javascript 使用Express won';不允许在应用程序外部命中POST路由,javascript,node.js,express,vue.js,nuxt.js,Javascript,Node.js,Express,Vue.js,Nuxt.js,背景 我有一个NUXT应用程序,可以像您所期望的那样呈现vue模板。我需要从外部应用程序客户端访问应用程序中的一些快速路由 我可以点击从外部应用程序获取路由,但POST请求失败,错误为404 示例 快车 这很有效 这在404中失败 在Nuxt应用程序内部和任何vue组件中,我都可以像这样点击POST路径 fetch('api/v1/pdf', { method: 'POST' } 但如果我们尝试做这样的事情,它会失败 fetch('localhost:3000/api/v1/pdf', { m

背景

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

我可以点击从外部应用程序获取路由,但POST请求失败,错误为404

示例

快车

这很有效

这在404中失败

在Nuxt应用程序内部和任何vue组件中,我都可以像这样点击POST路径

fetch('api/v1/pdf', { method: 'POST' }
但如果我们尝试做这样的事情,它会失败

fetch('localhost:3000/api/v1/pdf', { method: 'POST' }
第二个例子很重要,因为很明显,这就是我必须从外部应用程序到达这个应用程序的终点的方式

我不明白的是,为什么GET请求可以工作,但没有得到404,而POST请求继续从外部应用程序得到404

问题


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

这不是一个答案,而是为了我可以格式化内容并演示必须进行的其他操作。这个最小的例子对我来说很好

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
验证是否成功从外部请求返回post:

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

这是因为当NuxtJs应用程序投入生产时,它只看到页面
路由
而不是服务器
路由
。您应该使用NuxtJs
serverMiddleware
。您可以从NuxtJs API中找到它

您是否在使用某种解析器进行post路由?fetch将使用GET,除非您添加一个方法参数--fetch('localhost:3000/API/v1/pdf',{method:'post')是的,我在使用post。@EdwinDelRio我没有使用任何特殊的方法。正如你所看到的,问题中的这两条测试路线非常简单。我可以打外线,但不能打门柱。例如,如果我现在尝试在Postman中点击POST路由,它将失败。您使用的是
http
还是
https
?你试过了吗http://localhost:3001/...)
npm run dev
curl -X POST http://localhost:3000/api/test
{"message":"hello"}