Open remotesc2 opened 6 years ago
大家都没有碰到这个问题吗?
我倒不是 pending 状态,只是通过 post 请求的参数(form-data 和 x-www-form-urlencoded)全部获取不到
@remotesc2 我也好不容易发现这个问题,整死人
@alansuhe 哈,你可以在服务地址中,用 api 做 mock 数据的标记,用 proxy 做真实转发的标记。转发还是利用 webpack 的 proxy 配置。 先这么的用着,只不过服务地址的标记需要切换
我也是这种情况,也是POST无法传参 后端是使用spring-boot做的,没有使用@RequestBody注解而是使用的 x-www-form-urlencoded 前端我也是需要mock到本地的后台服务做测试,发现直连后端服务没有问题,但是使用mock的代理参数就传不过去 出现x-www-form-urlencoded的参数无法通过mock的代理传参是因为roadhog里面的mock.js使用了body-parser把参数都转换了(https://github.com/villadora/express-http-proxy/issues/162) 我现在是直接在.webpackrc.js里面使用devServer创建代理,8790是实际后端服务的端口 proxy: { '/action': { target: 'http://localhost:8790/', changeOrigin: true, }, }
same problem
正确的做法是用webpack的proxy代理,即.webpackrc.js 。 这里貌似是作者引用的一个proxy组件BUG引起的, 直接看源码才发现,在执行roadhog时候会引用.roadhogrc.mock.js暴露的proxy,查看roadhog源码,发现作者用的proxy组件 import proxy from 'express-http-proxy'; express-http-proxy这个组件可以去查看issues,一个现在还存在的bug就是当form传送文件时候,会把传的数据忽略掉,详细见issues. 而webpack用的proxy中间件是webpack-dev-middleware. 作者是否会替换掉项目内的这个proxy组件呢?@sorrycc
我也发现roadhog.mock.js内设置的proxy代理是无效的,我是从dora转过来的,如果每次切换代理地址都要通过修改webpack然后重新编译这会让我很不习惯。 @sorrycc
@davecat 我刚刚去看了这个插件express-http-proxy,其中一个issus(https://github.com/villadora/express-http-proxy/issues/321)提到了这个问题。最新版似乎已经修复是否可以做一次更新呢? @yesmeck
修过一次 https://github.com/sorrycc/roadhog/pull/797 升级到最新版试试。
另外这库不再维护了,建议迁移到 https://github.com/umijs/umi
在 .roadhog.mock.js 中进行了如下配置
export default noProxy ? {"POST /proxy8/(.*)": "http://218.76.*.*:8090/"} : delay(proxy, 1000);
使用 postman 发送 post 请求(参数形式均为 x-www-form-urlencoded),get 请求没有问题
如果请求为:
http://218.76.*.*:8090/web-service/service/water-meter-manage.do
,服务端能接收到相关参数如果请求为:
http://localhost:8000/proxy8/web-service/service/water-meter-manage.do
,相同的参数,服务端没有获取到之前用的 devServer 的 proxy 进行配置也是好的
是不是在做请求转发时,参数处理有问题?现在正在跟踪 utils/mock.js 中相关代码