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

在devServer的before钩子里配置的proxy,是会检查host的可用性么? #56

Open
yuanyuanshen opened this issue Aug 23, 2019 · 7 comments

Comments

@yuanyuanshen
Copy link

const apiDomainMap = {
'/ccs/api/getLoginInfo': 'https://taobao.com'
};
以上的配置 可以正常反向代理没有问题
const apiDomainMap = {
'/ccs/api/getLoginInfo': 'https://neibu-api.com'
};
以上的配置 反向代理失败 还是会用以前的 neibu:8084
neibu-api.com XX.XX.XX.XX // 这个是配置host的域名

所以是因为https://neibu-api.com域名不可用 所以能反向代理么?
不会是匹配规则的问题 因为试了taobao是可以正常代理过去的

@jaywcjlove
Copy link
Owner

@yuanyuanshen 一般情况,在浏览器里面访问,应该没有什么问题,你确定你配置在 host 的域名是在浏览器中可以访问的?

@jaywcjlove
Copy link
Owner

确保你的域名可以访问的情况,你可以在 node-http-proxy 的文档上看看有什么参数配置,调试一下,因为工具内部代理是用的就是 node-http-proxy

@yuanyuanshen
Copy link
Author

@jaywcjlove 好使了,可以代理过去,没问题,但是

// key为请求域名前缀,value为请求地址数组
let apiDomainMap = {
    '/search/repositories*': 'http://ccs-XXX-api.jdcloud.com',
    '/api/operation*': 'http://ccs-XXX-api.jdcloud.com'
}
// mocker.js
const proxy = {
    'GET /api/operation/list': [
        { id: 1, console: '接口啥时候好' },
        { id: 2, console: '接口好了么' },
        { id: 2, console: '工单能通' },
        { id: 2, console: '工单能调么' }
    ]
}
module.exports = proxy

我用vue页面axios请求
(1)/api/operation/list => http://localhost:8080/api/operation/list
(2)/api/operation/getGlobalConfig =>http://localhost:8080/api/operation/getGlobalConfig
(3)/api/operation/user => http://localhost:8080/api/operation/user

(1),(2)这两个接口,发现都能正常访问,(3)是404。但是接口(1)是本地的写死的,接口(2)是http://ccs-XXX-api.jdcloud.com这个域名部署的接口,所以虽然会对/api/operation 进行转发,但是内部机制是 先请求本地有没有,有返回,没有,代理到配置的服务器,配置服务器还没有就返回404,
我本地重写/api/operation/getGlobalConfig 接口 发现 本地和代理都有的话,优先本地

是这样的逻辑么?

@jaywcjlove
Copy link
Owner

@yuanyuanshen 优先本地是我们做开发的时候,

部分真实 API 可以访问,本地已经模拟好了的 api,是正常访问。

你需要一个一个的对 API,如果一下子自动全部请求真实 API,有可能字段定义不一样,返回数据不一样,导致报错工程跑步起来,

一个一个的替换 API,方便调试验证API

@yuanyuanshen
Copy link
Author

bofore 的钩子里配置的proxy 代理时候可以像devServer的proxy 中 proxyTable一样写 pathRewrite 么?应为路径中 一部分不想要,需要替换成空在做代理

pathRewrite: {
                '^/ccs-api': '' //需要rewrite的,
            }

@yuanyuanshen
Copy link
Author

@jaywcjlove

@jaywcjlove
Copy link
Owner

@yuanyuanshen 可以

module.exports = {
  //...
  devServer: {
    proxy: {
      '/api': {
        target: 'http://localhost:3000',
        pathRewrite: {'^/api' : ''}
      }
    }
  }
};

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

2 participants