axios

这是一个别人封装好的http请求库,使用时需要我们引入才能够使用。因为个人比较喜欢用这种方法请求数据所以放到第一位

axios官方文档

axios实例

let 新的对象变量 = axios.create({
  baseURL: "公共前缀",
  timeout: 10000, // 超时时间
  // headers: {}
})

// 未来使用axios时就不能用axios,要用新的对象
新的对象变量.get()
新的对象变量.post()

axios错误处理

如果我们每个请求都进行错误处理,而且大部分的错误都是相同的,每次都写catch很麻烦

axios.get().then().catch()

如果遇到这种情况,我们就可以用axios提供的响应拦截器 解决这个问题。如果使用的是axios.create创建的实例对象,那么设置拦截器也要用新的实例对象设置。

// 在代码的最上面 请求发起前 
axios.interceptors.response.use((response) => {
  // 请求成功时执行的函数 response就是请求到的结果
  return response
}, (error) => {
  // 请求错误时的函数
  // 对公共错误进行处理
  if (error.code === "xxx") {
    alert('什么什么错误,请修复')
  }
  return Promise.reject(error)
})

GET

axios.get(url, {
  params: {
    参数名: 参数值,
    参数名2: 参数值2
  }
}).then(res => {
  // res.data就是对应的结果
})

POST

axios.post(url, {
  参数名1: 参数值1,
  参数名2: 参数值2
}).then(res => {
  // res.data就是我们的结果
  // 注意可以进行链式调用
  // 继续在括号后面.then或者.catch
})

以上两种为常用方法,剩下的很少用到所以这里我就不多巴巴了,详情参考官方文档

ajax请求

要发起ajax请求有很多方法,原生xhr或者fetch都可以,我们先了解xhr

let xhr = new XMLHttpRequest()

xhr.onload = function () {
  // 我们请求到的结果,就是xhr.response 或者 xhr.responseText
}

xhr.open("请求方法", "请求URL?请求参数")
xhr.send()

我们获取到的response是一个JSON字符串,使用时需要将其转换为JSON对象。

JSON.parse(xhr.response)

Fetch

ES6中出现的替代xhr对象进行异步请求的一个对象。它默认是基于promise解决异步操作。fetch的用法很简单

fetch("请求地址?参数")
  .then(res => res.json()) // 把请求到的结果转换为JSON对象 在我们接下来的例子中,这一步是完全固定的
  .then(data => {
  // data就是我们请求到的结果
})

Fetch的配置

fetch(请求地址, {
  method: "", // GET POST PATCH PUT DELETE
  body: JSON.stringify({}), // 要传递数据 GET和delete不能写body,
  headers: {
    "Content-Type": "application/json"
  }
}).then(res => res.json()).then(data => {
  // data就是请求到的数据
  
})