axios
这是一个别人封装好的http请求库,使用时需要我们引入才能够使用。因为个人比较喜欢用这种方法请求数据所以放到第一位
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就是请求到的数据
})