当前位置:   article > 正文

axios的基本使用_axios使用

axios使用

axios 是什么?

Axios 是专注于网络数据请求的库。

相比于原生的 XMLHttpRequest 对象,axios 简单易用

相比于 jQueryaxios 更加轻量化,只专注于网络数据请求。

文档: https://github.com/axios/axios

axios 特点:

1. 基于 xhr + promise 的异步 ajax 请求库

2. 浏览器端/node 端都可以使用

3. 支持请求/响应拦截器

4. 支持请求取消

5. 请求/响应数据转换

6. 批量发送多个请求

axios常用语法:

axios(config): 通用/最本质的发任意类型请求的方式

axios(url[, config]): 可以只指定 url 发 get 请求

axios.request(config): 等同于 axios(config)

axios.get(url[, config]): 发 get 请求

axios.delete(url[, config]): 发 delete 请求

axios.post(url[, data, config]): 发 post 请求 

axios.put(url[, data, config]): 发 put 请求

axios.defaults.xxx: 请求的默认全局配置

axios.interceptors.request.use(): 添加请求拦截器

axios.interceptors.response.use(): 添加响应拦截器

---------------------------------------------------------------------------------

axios.create([config]): 创建一个新的 axios(它没有下面的功能)

axios.Cancel(): 用于创建取消请求的错误对象

axios.CancelToken(): 用于创建取消请求的 token 对象

axios.isCancel(): 是否是一个取消请求的错误

axios.all(promises): 用于批量执行多个异步请求

axios.spread(): 用来指定接收所有成功数据的回调函数的方法

基本使用:

  1. axios发送get请求:
  2. axios.get('url地址', { params: {请求的参数对象}}).then(function(res){
  3. //.then()表示成功的回调
  4. console.log(res.data) //res.data 是服务器返回的数据,会自动转为js对象格式
  5. })
  6. -------------------------------------------------------------------------------------------
  7. axios发送post请求:
  8. axios.post('url地址', {要提交到服务器的数据}).then(function(res){
  9. console.log(res.data) //res.data 是服务器返回的数据
  10. })
  11. -------------------------------------------------------------------------------------------
  12. 直接使用axios发起请求:
  13. axios({
  14. method'请求类型',
  15. url'请求的URL地址',
  16. data: { POST数据  }, //POST 数据要通过data属性提供
  17. params: { GET参数 } //GET参数要通过params属性提供
  18. }) .then(function(res){
  19. console.log(res.data)
  20. })

 默认配置:

  1. axios.defaults.method="post" //设置默认的请求类型
  2. axios.defaults.baseURL="XXX" //设置默认url地址
  3. axios.defaults.XXX=XXX //设置XXX的默认配置为XXX
  4. axios({
  5. ....
  6. }).then(function(res){
  7. console.log(res.data)
  8. })

axios创建实例发送请求:

  1. const a=axios.create({
  2. //创建实例对象
  3. })
  4. a({
  5. method:"post",
  6. url:"xxx",
  7. data:{}
  8. }).then(function(res){
  9. console.log(res)
  10. }) //这里实例对象与axios功能几乎是一样的
  11. //axios 实例只是没有取消请求和批量发请求的方法, 其它所有语法都是一致的

axios请求响应结果的结构:

config:配置对象

data:响应体结果

headers:响应体信息

request:原生ajax对象

status:响应状态码

statusText:响应状态字符串

axiios取消请求:

  1. var one=document.getElementById("one")
  2. var two=document.getElementById("two") //获取按钮
  3. let cancel=null //声明全局变量
  4. //发送请求
  5. one.onclick=function(){
  6. axios({
  7. method:"post",
  8. url:"xxx",
  9. //添加配置对象的属性
  10. cancelToken:new axios.CancelToken(function(c){
  11. cancel=c //将c的值赋值给cancel
  12. })
  13. }).then(function(res){
  14. console.log(res.data)
  15. })
  16. }
  17. //取消请求
  18. two.onclick=function(){
  19. cancel()
  20. }

axios拦截器(可以在发送请求时或响应的时候做一下操作):

  1. //设置请求拦截器
  2. axios.interceptors.request.use(function (config) {
  3. console.log("请求拦截器成功") //condig是配置对象
  4. return config;
  5. }, function (error) {
  6. console.log("请求拦截器失败")
  7. return Promise.reject(error);
  8. });
  9. //设置响应拦截器
  10. axios.interceptors.response.use(function (response) {
  11. console.log("响应拦截器成功") //response是响应结果
  12. return response;
  13. }, function (error) {
  14. console.log("响应拦截器失败")
  15. return Promise.reject(error);
  16. });
  17. axios({
  18. method:"get",
  19. url:"url地址"
  20. }).then(res=>{
  21. console.log(res)
  22. })
  23. //分别输出:请求拦截器成功 响应拦截器成功 res的值
  1. //设置请求拦截器
  2. axios.interceptors.request.use(function (config) {
  3. console.log("请求拦截器成功")
  4. throw "出问题了" //如果抛出异常会返回一个失败的promise
  5. }, function (error) {
  6. console.log("请求拦截器失败")
  7. return Promise.reject(error);
  8. });
  9. //设置响应拦截器
  10. axios.interceptors.response.use(function (response) {
  11. console.log("响应拦截器成功")
  12. return response;
  13. }, function (error) {
  14. console.log("响应拦截器失败")
  15. return Promise.reject(error);
  16. });
  17. axios({
  18. method:"get",
  19. url:"http://www.liulongbin.top:3006/api/getbooks"
  20. }).then(res=>{
  21. console.log(res)
  22. }).catch(res=>{
  23. console.log(res)
  24. })
  25. //分别输出:请求拦截器成功 响应拦截器失败 出问题了

请求拦截器失败的回调什么时候会触发:

响应拦截器成功的回调什么时候会触发:

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/397121
推荐阅读
相关标签
  

闽ICP备14008679号