Vue3 axios安装及配置 devServer属性配置

1. 安装axios

npm i axios --save

2. 配置axios

创建api文件夹(路径:src/api)

创建index文件 (路径:src/api/index)

配置index.js文件

import axios from 'axios'

const instance = axios.create({
    baseURL:'http://localhost:3000', 
    //不存在跨域问题这样直接配置
  
})
//登录请求
export const dologin = (data) => {
    return instance.request({
        url: '/login/cellphone',
        method: 'post',
        params: data,
 
    })
}

3. 跨域问题

如果你的前端应用和后端 需要跨域,你需要在开发环境下将 API 请求代理到 API 服务器。可以通过 *.config.js 中的 devServer.proxy 选项来配置。

当运行 npm run dev 的时候,devServer首先会在内存中创建类似的dist目录,这里不会看到生成的dist打包文件,是因为webpack-dev-server是将打包编译结果放在内存中,内部的http-sever会访问这些文件并读取数据,再发送给浏览器 ,由浏览器打开进行预览。

devServer.proxy 可以是一个指向开发环境 API 服务器的字符串:

   devServer: {
    open: false, // 编译完成是否打开网页
    host: '0.0.0.0', // 指定使用地址,默认localhost,0.0.0.0代表可以被外界访问
    port: 8080, // 访问端口
    https: false, // 编译失败时刷新页面
    disableHostCheck: true,	// 是否关闭用于 DNS 重绑定的 HTTP 请求的 HOST 检查。
    hot: true, // 开启热加载
    hotOnly: false,
    proxy: {
      [process.env.VUE_APP_API]: {
        // 拦截器(拦截链接中有/api)
        target: process.env.VUE_API_DEV_TARGET, // 'http://192.168.1.114:3000', //process.env.VUE_API_DEV_TARGET, //API服务器的地址
        changeOrigin: true,	// 是否跨域
        pathRewrite: { //重写路径
          // '^/api': ''
          [`^${process.env.VUE_APP_API}`]: ''
          // 配置出来的接口没有 /api
          // 比如/api/admin/being/classes/classInfo 会被替代成/admin/being/classes/classInfo
        }
      }
    }
  },

实际使用 高频属性详解

devServer: {
    // 运行代码的目录
    contentBase: resolve(__dirname, 'build'),
    // 监视contentBase目录下的所有文件,一旦有变化就会reload
    watchContentBase: true,
    watchOptions:{
        // 忽略文件
        ignored: /node_modules/
    },
    // 启动gzip压缩
    compress: true,
    // 端口号
    port: 5000,
    // 域名
    host: 'localhost',
    // 自动打开浏览器
    open: true,
    // 开启HMR功能
    hot: true,
    // 不要显示启动服务器的日志
    clientLogLevel: 'none',
    // 除了一些基本启动信息外,其他内容都不要显示
    quiet: true,
    // 如果出现错误信息,不要全屏提示
    overlay: false,
    // 服务器代理,解决开发环境下跨域问题
    proxy: {
        // 一旦devserver(5000)服务器接收到 /api/xxx的请求,就会把请求转发到另外一个服务器(3000)
        '/api': {
            target: 'http://localhost:3000',
            // 发送请求时,请求路径重写:将/api/xxx -> /xxx(去掉/api)
            pathRewrite:{
                '^/api': ''
            }
        }
    }
}

 

PS:devServer.disableHostCheck配置项用于配置是否关闭用于 DNS 重绑定的 HTTP 请求的 gao它通常用于搭配–host 0.0.0.0使用,因为你想要其它设备访问你本地的服务,但访问时是直接通过 IP 地址访问而不是 HOST 访问,所以需要关闭 HOST 检查。

其中的process.env.Vue_app_API是开发环境文件.env.development中的内容

VUE_APP_API = "/api"
VUE_API_DEV_TARGET = "http://192.168.1.114:3000/" //请求地址

创建axios实例

const service = axios.create({
  baseURL: process.env.VUE_APP_API,
  withCredentials: true, // send cookies when cross-domain requests
  timeout: 30000, // request timeout
  headers: {
    "Content-Type": "application/json;"
  }
});

1. proxy会拦截所有url中可以成功匹配到 ‘/api’ 的请求(proxy采用正则匹配,一旦url中包含你要的字符串则停止向下匹配,详查proxy匹配规则)

2. 它会把拦截到的请求中的baseUrl替换为此处的target
    如,http://192.168.1.114:3000/banner为请求内容的api,
   本地项目为http://192.168.1.114:3001/进行访问,这就需要跨域,经过上述配置后。
   使用http://192.168.1.114:3001/api/baner请求时,通过devServer.proxy拦截器把                   http://192.168.1.114:3001/api进行替换成http://192.168.1.114:3000/后加/banner进行请求

api调用

export function getBrainInfo(params) {
  return service.request({
    url: '/expert/brain',
    method: 'get',
    params
  })
}

第二种

devServer: {
    disableHostCheck: true,
    open: true,
    host: '192.168.1.114', // 本机ip
    port: 3001, // 本机端口
    https: true,
    proxy: 'http://192.168.1.114:3000', // 需代理的地址
    before: app => {}
 },

代理 proxy:  当您有一个单独的API后端开发服务器,并且想要在同一个域上发送API请求时,则代理这些 url 

proxy: {
    '/proxy': {
        target: 'http://your_api_server.com',
        changeOrigin: true,
        pathRewrite: {
            '^/proxy': ''
        }
}
  • 假设你主机名为 localhost:8080 , 请求 API 的 url 是 http://your_api_server.com/user/list
  • '/proxy':如果点击某个按钮,触发请求 API 事件,这时请求 url 是http://localhost:8080/proxy/user/list 。
  • changeOrigin:是否跨域。如果 true ,那么 http://localhost:8080/proxy/user/list 变为 http://your_api_server.com/proxy/user/list 。但还不是我们要的 url 。
  • pathRewrite:重写路径。匹配 /proxy ,然后变为'' ,那么 url 最终为 http://your_api_server.com/user/list 。

参考

webpack-dev-server【devServer属性配置】_JIseven的博客-优快云博客_webpack-dev-server配置

vue.config.js文件的devServer本地开发相关配置._青颜的天空的博客-优快云博客_devserver vue.config.js

配置参考 | Vue CLI

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值