我正在尝试对使用Vue CLI创建的Vue.js项目进行操作。 [问题]对这个问题并不重要,因此为了简洁起见,我将其省略。我已经注意到,当我使用此项目运行本地Web服务器时
$ npm run serve
GET请求可以正常工作;但是POST请求给我一个404-“无法发布”。我需要能够同时做这两个。
使用Express,只需在默认router.post(...)
之外添加router.get(...)
,即可通过GET和POST为同一页面提供服务。但是,在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配置非常复杂。
答案 0 :(得分:2)
Vue路由器未收到(GET)请求并没有响应,它只是在读取当前URL并插入相应的组件。简而言之,不,没有POST请求处理程序...我认为它甚至也不处理GET请求,只是读取看起来像GET请求的URL。
如果您尝试在应用程序内的页面之间进行POST,则需要Vuex。 如果您尝试从外部发布到您的应用程序,那么让实际的服务器侦听可以ping的请求会更容易(例如Express)。
可能是一种使用Axios从您的应用程序执行此操作的方法。它可以侦听POST请求的响应,因此,如果正在侦听,我看不到为什么无法接收。但是,我怀疑您必须从运行您的应用程序的计算机上监听端口,这将是一个主要的安全问题(如果客户端的浏览器/ OS /防病毒软件甚至允许您访问该端口)。
答案 1 :(得分:0)
距离我发布此问题已经快两个星期了,但是直到我一个星期都在为这个问题苦苦挣扎之前,我什至没有发布过该问题。经过大量的总部工作和更多的死胡同,我终于找到了解决方案,这对我的血压重新计算没有好处。在这里:
devServer: {
before: function(app) {
app.post('/about.html', function(req, res) {
res.redirect('/about.html');
});
},
}