首页 > 解决方案 > Vue.js 与服务 POST 请求不兼容吗?

问题描述

我正在尝试使用 Vue CLI 创建的 Vue.js 项目来做 [事情]。[Thing] 对这个问题不是很重要,所以为了简洁起见,我将省略它。当我为这个项目运行本地 Web 服务器时,我注意到

$ npm run serve

GET 请求工作得很好;但是 POST 请求给了我一个 404 - “无法 POST”。我需要能够同时做到这两点。

使用Expressrouter.post(...) ,只需在 default 之外添加 GET 和 POST 即可直接使用相同的页面router.get(...)。但是,在 Vue.js 中,这似乎很困难。

我花了一些时间玩Vue Router,但是仔细阅读文档我还没有找到一个配置选项来告诉它“这是如何响应 POST 请求”——它似乎需要 GET。

但也许我正试图将一个方形钉子敲入一个圆孔。Vue.js 面向在浏览器中运行的应用程序,并且浏览器发送 GET 请求(目前我对表单提交不感兴趣......)其中 POST 请求往往更多是 Web 应用程序/集成/后端一种东西。

你们怎么看 - 我有什么明显的遗漏,还是我应该以“简单”的方式做到这一点并切换到 Express?

更新:我的“问题”不是 Vue.js,特别是 - 它是二进制 vue-cli-service,它肯定会监听 GET,但不会监听 POST。(来自 Postman 的 GET 成功;来自 Postman 的 POST 失败。)如果我为部署而构建,webpack 会将项目转换为 HTML/JS/CSS,由不同的 Web 服务器提供服务,并且 POST 工作得很好——它只是在 vue 的开发模式下-cli-service 在本地为我的应用程序提供服务,我无法使用 POST 请求。

是否有一种未记录的方法可以使 vue-cli-service 响应 POST 请求?我已经搜索了文档,但没有找到任何东西。我不确定如何让另一个 Web 服务器为 Vue.js 项目服务,因为 webpack 配置是……复杂的。

标签: javascriptexpressvue.jssingle-page-applicationvue-router

解决方案


Vue Router 没有收到(GET)请求并做出响应,它只是读取当前 URL 并插入相应的组件。所以简而言之,不,没有 POST 请求处理程序......我认为它甚至没有处理 GET 请求,只是读取看起来像 GET 请求的 URL。

如果您尝试在应用程序内的页面之间发布,那么 Vuex 就是您想要的。如果您尝试从外部 POST 到您的应用程序,让一个实际的服务器侦听您可以 ping 的请求会更容易(即 Express)。

可能有一种方法可以使用Axios从您的应用程序中执行此操作。它可以监听来自 POST 请求的响应,所以如果它正在监听,我看不出它为什么无法接收。但是,我怀疑您必须从运行您的应用程序的机器上监听一个端口,这将是一个主要的安全问题(如果客户端的浏览器/操作系统/防病毒软件甚至允许您这样做)。


推荐阅读