vue-cli 接口代理配置

来源:互联网 发布:用什么画网络拓扑图 编辑:程序博客网 时间:2024/06/05 22:34

一些同学在配置接口代理时,会有疑问 我配置成功了为什么接口还是不通 ,其实代理已经成功 只是 接口访问地址规则没搞清楚


下面以本地测试为栗子 向大家介绍 


一些基本操作这里就不介绍了 


找到vue-cli config 文件夹下的 index.js  这是是配置接口规则的文件 同目录下建立 proxyConfig.js  一些同学习惯直接在原文件修改 ,也是可以但推荐使用新建文件的方式:

module.exports = {

    proxyList: {

        '/api': {

            target: 'http://localhost:3000',   (这里是代理接口的位置)

            changeOrigin: true,(允许跨域,如果这不写,调用接口接口时会有跨域错误说缺少请求头)

            pathRewrite: {'^/api': '' } (路由规则下面详细介绍)

        }

    }

}


******路由规则*******


    上述代码执行之后,意思就是 只要在接口中看到‘/api‘ 会自动变成我们设置的地址,那么我们在设置的时候可以规范接口书写标准 就用到了这个属性 pathRewrite 路径重写{'^/api': '' } 是指你想让路由变成什么样子 ,如果是空 那么在解析时 如果我们的接口写的是 $http.get('/api/good') 那么在服务端我们将会看到 /good的访问,如果此时在服务端并没有相应的路由匹配,客服端就会显示报错,端口号还是客户端的端口号,所以很多同学就错觉没有起作用 ,同理如果我们设置{'^/api': '/api' } 那么在服务端将会看到/api/goods 的接口访问,意思就是不仅将/api自动解析成代理地址,还会作为服务端的路由展示。

    另外在设置路由规则注意分隔符/  有些同学喜欢这样写 target: 'http://localhost:3000/', 自己写端口后面加上一个分隔符,会发现路由对不上,这时你需要在命名的时候也要加上‘/’ 路由规则也要加上‘/’ 接口才能对,不然 会发现请求接口的时候多了一个分隔符 如:'/api//goods'。

    此外,在配置代理规则时,可能根据服务端的路由,我们要进行多层级路由匹配 例如我们配置 我们服务端配置了 /api/A/C 或者/api/B 这样多层级路由 都要匹配到 /api 的代理规则下

'/users/*': {
            target: 'http://localhost:3000/',
            changeOrigin: true,
            pathRewrite: {
                '^/users/*': '/users/'
            }
        }

规则后面匹配一个* 代表一层及 如果想匹配两个层级 就可以/users/**

匹配规则可以依照项目接口层级规划来细细划分

********************    

设置完之后,在index.js 里面 引入 proxyConfig.js,设置 proxyTable 完成设置 

const proxyConfig = require('./proxyConfig')

module.exports = {

    dev: {

        env: require('./dev.env'),

        host: 'localhost',

        port: 8188,

        autoOpenBrowser: true,

        assetsSubDirectory: 'static',

        assetsPublicPath: '/',

        proxyTable: proxyConfig.proxyList,

        cssSourceMap: false,

    }

 }

请求时 这样写

axios.get('/api/goods').then((res)=>{console.log(res.data);}}).catch((err)=>{console.log(err);}})

原创粉丝点击