Axios

92 阅读3分钟

Axios基本概念

  • Axios是一个基于Promise封装的一个http库,可以用于浏览器和node.js中
  • Axios是通过promise实现对ajax技术的一种封装,就像jQuery实现ajax封装一样

安装Axios

npm install axios

发送请求

发送get请求

axios({
  method:  "get", // (默认是get请求)
  url:  "/user/12345",
  params: {
    firstName:  "Fred",
    lastName:  "Flintstone"
  }
})
.then(function (response) {  
    //response就是请求的结果
    
  });

快捷发送get请求

//axios.get(url[, config])
axios.get('/data.json', {
  params:{
    id:1234
  } 
}).then((res)=>{
    
})

发送post请求

axios({
  method:  "post",
  url:  "/user/12345",
  data: {
    firstName:  "Fred",
    lastName:  "Flintstone"
  }
})
.then(function (response) {  
  response
});

快捷发送post请求

//axios.post(url[, data[, config]])
axios.post('/data.json', {
    id:1234
})

自定义axios实例

axios.create({
    //配置项
})

配置项

以下配置中,只有url是必须的,如果没有配置method,将默认使用get方法。

  1. url: '/user': 用户请求服务器资源的 URL
  2. method: 'post': 创建请求时使用的方法
  3. baseURL: 'http://demo-domain:8080/api/': 自动加在URL(非绝对路径时)前的路径
  4. headers: { 'x-Requested-With': 'XMLHttpRequest' }: 自定义请求头
  5. params: { 'ID': '12345' }: 与请求一起发送的URL参数,当method指定为GET时使用
  6. data: { 'name': 'zhangfs' }: 请求主体参数,用于PUT,POST,PATCH方法
  7. timeout: 8000: 请求超时时间,0表示无超时;超过时间请求被中断
  8. withCredentials: false: //表示跨域请求时是否需要使用凭证,是true的时候,开启withCredentials后,服务器才能拿到你的cookie,当然后端服务器也要设置允许你获取你开启了才有用

拦截器

请求拦截器- axios.interceptors.request

// 注意,这里面有 2 个函数——分别是成功和失败时的回调函数
axios.interceptors.request.use(function (config) {
    // 发起请求前执行一些处理任务
    return config; // 返回配置信息
  }, function (error) {
    // 请求错误时的处理
    return Promise.reject(error);
  });

响应拦截器

axios.interceptors.response.use(function (response) {
    // 处理响应数据
    return response; // 返回响应数据
  }, function (error) {
    // 响应出错后所做的处理工作
    return Promise.reject(error);
  });

关于本地存储

localStorage和sessionStorage只能存储字符串,如果需要存储对象,首先要转化为字符串。

任何本地存储都不能跨域访问

sessionStorage和localStorage

//1.保存数据
sessionStorage.setItem('key', 'value')
localStorage.setItem('key', 'value')
//2.获取数据
sessionStorage.getItem('key')
localStorage.getItem('key')
//3.删除数据
sessionStorage.removeItem('key')
localStorage.removeItem('key')
//4.清空数据
sessionStorage.clear()
localStorage.clear()

cookie

// 设置cookie

document.cookie = "username=orochiz"

document.cookie = "age=20"

// 读取cookie

var msg = document.cookie

console.log(msg) // username=orochiz; age=20

// 添加过期时间(单位:天)

var d = new Date() // 当前时间

var days = 3 // 3天

d.setDate(d.getDate() + days)

document.cookie = "username=orochiz;"+"expires="+d

// 删除cookie (给某个键值对设置过期的时间)

d.setDate(d.getDate() - 1)

console.log(document.cookie)

cookie、sessionstorage、localStorage的对比(非常重要的面试题)

一、存储的时间有效期不同

1、cookie的有效期是可以设置的,默认的情况下是关闭浏览器后失效

2、sessionStorage的有效期是仅保持在当前页面,关闭当前会话页或者浏览器后就会失效

3、localStorage的有效期是在不进行手动删除的情况下是一直有效的

二、存储的大小不同

1、cookie的存储是4kb左右,存储量较小,一般页面最多存储20条左右信息

2、localStorage和sessionStorage的存储容量是5Mb(官方介绍,可能和浏览器有部分差异性)

三、与服务端的通信

1、cookie会参与到与服务端的通信中,一般会携带在http请求的头部中,例如一些关键密匙验证等。

2、localStorage和sessionStorage是单纯的前端存储,不参与与服务端的通信

vue跨域配置

 devServer: {
    proxy: { //配置跨域
      '/api': {
        target: 'http://localhost:80', //填写请求的目标地址
        // ws: true,
        changOrigin: true, //允许跨域
        pathRewrite: {
          '^/api': '' //请求的时候使用这个api就可以
        }
      }
    }
  }