axios

Axios

基于http库,可以用在node.js与浏览器中
是一个第三方请求的工具

axios官网

安装

npm i axios

格式

axios({
	 // `url` 是用于请求的服务器 URL
  url: '/user',

  // `method` 是创建请求时使用的方法
  method: 'get', // default
 // `baseURL` 将自动加在 `url` 前面,除非 `url` 是一个绝对 URL。
  // 它可以通过设置一个 `baseURL` 便于为 axios 实例的方法传递相对 URL
  baseURL: 'https://some-domain.com/api/',
   // `params` 是即将与请求一起发送的 URL 参数
  // 必须是一个无格式对象(plain object)或 URLSearchParams 对象
  params: {
    ID: 12345 //get携带的参数
  },
  // post请求的参数
  data:{}// `timeout` 指定请求超时的毫秒数(0 表示无超时时间)
  // 如果请求话费了超过 `timeout` 的时间,请求将被中断
  timeout: 1000,
  // `headers` 是即将被发送的自定义请求头
  headers: {'X-Requested-With': 'XMLHttpRequest'},
})

或者

axios.get('url',{'params携带的参数写于此':''})

axios的实例

可以使用实例来发送请求,为拦截器进行服务。
 let instance = axios.create({
      baseURL: 'BASEURL',
      timeout: 5000,
      header: {
        'Auth': '123'
      }

    })
      instance.post('/user/login',{
      username: 'admin1',
      password: '123321',
    }).then(res => {
      console.log(res);
    });

配置默认项

给axios配置配置默认项,能在全局默认了使用该配置
主要用于配置全局路径以及超时配置
 axios.defaults.baseURL = 'BASEURL'
    axios.post('/user/login',{
      username: 'admin1',
      password: '123321',
    }).then(res => {
      console.log(res);
    });

请求拦截器 interceptors

有请求成功的拦截器,以及请求失败的拦截器,每个请求在发送之前都会遇到这个拦截器。
   axios.interceptors.request.use(config =>{
      // 在请求之前做一些什么事情
      if(config.url!='/user/login'){
        // 如果请求的路径登录,那么就携带token
        config.header.Authorization = '123'
      }
      return config;
    },error =>{
      // 请求失败
      return Promise.reject(error)
    })

响应拦截器

 axios.interceptors.response.use(response =>{
      // 返回后端的数据
      let res = response.data;
      return res;
    },error =>{
      // 响应失败
      return Promise.reject(error)
    })

axios在vue脚手架里面的二次封装

import axios from 'axios'
import qs from 'qs'

// 创建axios的实例对象

let instance = axios.create({
  baseURL: 'http://129.199.0.35:8888',
  timeout: 5000,

})

// 请求拦截器
instance.interceptors.request.use(config => {
  console.log(config);
  return config
}, error => {

  return Promise.reject(error);
})

// 响应拦截器,对后端返回的数据进行拦截
instance.interceptors.response.use(response => {
let res = response.data;
  return res;
}, error => {
  return Promise.reject(error)
})

// 封装get方法
export function get (url, params) {
  return instance.get(url, {
    params
  })
}

// 封装post方法,封装一个json格式的
export function postJSON (url, data) {
  return instance.post(url, data, {})
}

// 封装post的表单格式的数据
export function post (url, data) {
  return instance.post(url, qs.stringify(data))
}

export default instance

axios的并发

all

返回的顺序与发送请求的顺序一样。
spread处理请求成功之后处理各个请求的数据
 axios.all([
      axios.get('http://121.199.0.35:8888/index/article/pageQuery', {
        page: 1,
        pageSize: 10
      }),
      axios.get('http://121.199.0.35:8888/index/carousel/findAll'),
      axios.post('http://121.199.0.35:8888/user/login')
    ]).then(res=>{
      console.log(res[0],res[1],res[2]); //三个数据
    })

ajax 与 axios的区别

1.ajax的特点:
	1.异步的XML和JavaScript 
	2.可以运行浏览器 不可以运行在node
	3.发送给后台数据需要手动转换 请求头手动设置
	4.后端响应的数据需要自己转换/json格式
2.axios的特点
	1. 基于 promise的http库
	2. 可以调用promise的api
	3. axios默认发送的是json格式的,和get请求
	4. axios请求发送的数据格式会自动转换
	5. axios会将响应的数据进行封装,一般会封装成一个对象 { config,header,data{}... } ,响应的数据在data里面。
	6. 是基于promise与ajax的封装。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值