Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

之前一直在用2.0.4版,之前配置了proxy, 如果有配置mocker的路径就走mock,没有就走代理的特性没有了 #151

Closed
aizigao opened this issue Nov 18, 2020 · 13 comments

Comments

@aizigao
Copy link
Contributor

aizigao commented Nov 18, 2020

这个特性,是我用这个项目的主要原因,我升了个级后这个特性没有了,我也就一直没有升级,主要为

  1. 设置了代理全部到https://xxx.yyy.com/
  2. 访问如 /h5-api/v1/detail,如果有配置mock就走mock,没有就走代理到https://xxx.yyy.com/h5-api/v1/detail
const proxy = {
  _proxy: {
    proxy: {
      "/(.*)": "https://xxx.yyy.com/",
    },
    changeHost: true,
  },
  "GET /h5-api/v1/detail": { test: true },

——————————
我对比了一下2.0.4的代码,发现mock和proxy的顺序改了,说以话说现在还有其它的方案实现这种功能吗

image

@jaywcjlove
Copy link
Owner

jaywcjlove commented Nov 18, 2020

@aizigao #144 (comment)

这个是配置顺序。你想要的顺序是什么什么顺序呢?

如果配置了 mocker 文件地址,就走 mocker 配置文件里面,如果没有就走传递的方法里面?

v2.0.4...v2.7.3

@aizigao
Copy link
Contributor Author

aizigao commented Nov 18, 2020

@jaywcjlove 我想要的顺序是 就算配置了代理,如果已经有配置了对的mock 接口配置就走mock,没有配置的mock接口就走代理。
我们这边大部分接口还是想走真实的数据,部分接口走mock,这样会比较方便; 😄

@jaywcjlove
Copy link
Owner

mock 出来的数据不是假的数据?怎么是真实数据呢?

我们这边的需求是这样的,开发初期,都是 mock 出来的假数据,来了一个 API 配置一下代理走真实的,来了一个 API 再配置代理,走真实 API,

这样慢慢 mock 的数据就被替换掉了,不用去删除或者注释 mock 内容, 所以改了顺序。

@aizigao

@aizigao
Copy link
Contributor Author

aizigao commented Nov 18, 2020

@jaywcjlove 比如我在开发一个内嵌web到某app的应用,如果不走真实接口,大概率oauth不过去,有些页面的权限比较多,每次都改mock文件比较麻烦,我写的了简单pr #152

我们这边日常用这个库的开发模式是,针对几个接口开mock,其它都走真实接口(必要时走一层nginx或whistle之类的代理域名),开发完后,对应的接口直接注释掉 🤣

@jaywcjlove
Copy link
Owner

你的意思是配置 proxy, mock 的API 自动失效? @aizigao

@jaywcjlove
Copy link
Owner

@aizigao 这样不好吧,能不能弄个开关配置,既支持 proxy 优先,又支持 mock 优先?

@aizigao
Copy link
Contributor Author

aizigao commented Nov 18, 2020

你的意思是配置 proxy, mock 的API 自动失效? @aizigao

比如这个配置,

 _proxy: {
    proxy: {
      "/(.*)": "https://api.github.com/",
    },
    changeHost: true,
  },
  // 注释它则走 默认代理
  "GET /repos/jaywcjlove/mocker-api": {
    mock: true,
  },

我配置了 "GET /repos/jaywcjlove/mocker-api",在访问其它github接口时可以直接到github, 访问 /repos/jaywcjlove/mocker-api时会走mock的数据,也就是使用mock时如果满足proxy条件也优先走mock

@aizigao
Copy link
Contributor Author

aizigao commented Nov 18, 2020

@aizigao 这样不好吧,能不能弄个开关配置,既支持 proxy 优先,又支持 mock 优先?

对,我是这个意思,那这个开关能不能整一个 👍

@cuidong626
Copy link

配置了拦截所有请求的代理后,就没办法走mock了,希望增加单独控制mock优先级的

@wll8
Copy link

wll8 commented Dec 18, 2020

配置了拦截所有请求的代理后,就没办法走mock了,希望增加单独控制mock优先级的

这个功能可以使用了吗?

@jaywcjlove
Copy link
Owner

@wll8 稍微等待,还没有时间开发

@urrri
Copy link

urrri commented Jan 6, 2021

I also have the same problem.
I set mock for some requests and rest I want to pass through the proxy, but proxy today has higher priority and all my specific requests don't reach mock.

@jaywcjlove
Copy link
Owner

@aizigao @chaosforfun @urrri @wll8 @cuidong626 Upgrade + mocker-api@2.8.0

const proxy = {
// Priority processing.
_proxy: {
priority: 'mocker',
proxy: {
'/repos/(.*)': 'https://api.github.com/',
// '/repos/jaywcjlove/webpack-api-mocker': 'https://api.github.com/repos/jaywcjlove/webpack-api-mocker',
},
changeHost: true,
},
'GET /repos/jaywcjlove/webpack-api-mocker': {
"stargazers_count": 11111,
"subscribers_count": 6
},
'GET /repos/jaywcjlove/github-rank': {
"stargazers_count": 55555555,
"subscribers_count": 6
},

添加了个配置 priority 默认值为 proxy,要实现你们的想法,将参数设置为 mocker

  • proxy 优先走代理配置
  • mocker 优先 mock 配置

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants