公司有个 mock 平台,配置规则后,挂载服务上就可以对 thrift 接口进行 mock。 想知道原理,奈何找不到文档周围人也只是用,有没有这方面经验的大佬解答下其中原理呢?
你可以认为 mock 就是 后台服务,里面挂载服务程序,不过挂的服务不做生产逻辑,做定制的 rule 逻辑或者转发给真实服务,在获得结果后再转回给请求者。 没啥神奇的魔术
不用知道原理,mock 框架很多,简单封装一下就是一个平台。 比如: https://www.mock-server.com/mock_server/creating_expectations.html
https://www.apifox.cn/help/app/mock/mock-rules/ 扒拉个别的接口 mock 工具的文档说明来,你看看,应该有些能用的,基本都是要熟悉 mock.js 的语法
研究一下 https://github.com/macacajs/macaca-datahub 你就知道原理了,mock server 会在中间劫持 http 请求,之后转发给后端,或者自己返回 mock 数据。
https://github.com/macacajs/macaca-datahub 文档:https://macacajs.github.io/macaca-datahub
我的理解
针对客户端、服务端,两者正常收发请求的场景来解释,一个 mock 平台关键流程如下:
对于用户来说可以感知不到 mock 平台的存在,而在网络请求链路上来看,mock 平台就是一个代理角色,是一个中间人(了解一下中间人攻击概念)。mitmproxy是一个经常用来做 mock 平台的代理。
但实际工作中也不应该只把 mock 平台当成是一个代理,mock 平台是围绕代理这个基本要素来扩展各种外围功能,包括但不仅限于: