javascript - 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 配置是……复杂的。
解决方案
Vue Router 没有收到(GET)请求并做出响应,它只是读取当前 URL 并插入相应的组件。所以简而言之,不,没有 POST 请求处理程序......我认为它甚至没有处理 GET 请求,只是读取看起来像 GET 请求的 URL。
如果您尝试在应用程序内的页面之间发布,那么 Vuex 就是您想要的。如果您尝试从外部 POST 到您的应用程序,让一个实际的服务器侦听您可以 ping 的请求会更容易(即 Express)。
可能有一种方法可以使用Axios从您的应用程序中执行此操作。它可以监听来自 POST 请求的响应,所以如果它正在监听,我看不出它为什么无法接收。但是,我怀疑您必须从运行您的应用程序的机器上监听一个端口,这将是一个主要的安全问题(如果客户端的浏览器/操作系统/防病毒软件甚至允许您这样做)。
推荐阅读
- php - Woocommerce - 如何获取产品数据
- android - 如何使用 Flutter 从 Firebase 获取当前活跃用户?
- javascript - 如何在tippy js中显示悬停滚动?
- ruby-on-rails - 部署 capistrano 和 rvm 时 puma 未运行
- java - 将数组发送到 Micronaut Graphql 以从 ReactJS 查询
- jquery - jQuery Datepicker - 开始和结束日期类的问题
- java - Springboot 属性类型不匹配
- powershell - 通过 Powershell 删除 Outlook 约会
- javascript - 在输入反应后从数组中渲染一个组件
- device-driver - 如何在测试分发上重现 Windows 更新逐步推出阶段的问题