Axios介绍及简单封装

定义

Axios 是一个基于 promise 的网络请求库,可以用于浏览器和 node.js中。Axios(相比于原生的XMLHttpRequest对象来说) 简单易用,(相比于jQuery)axios包尺寸小且提供了易于扩展的接口,是专注于网络请求的库。

请求的方法

get:获取数据,请求制定的信息,返回实体对象

post:向指定资源提交数据(例如表单提交或文件上传)

put:更新数据,从客户端向服务器传送的数据取代指定的文档的内容

patch:更新数据,是对put方法的补充,用来对已知资源进行局部更新

delete:请求服务器删除指定的数据

head:获取报文首部

如何安装

  • 使用npm安装
npm install axios
  • 使用unpke CDN 
<script src="https://cdn.bootcdn.net/ajax/libs/axios/1.2.0/axios.min.js"></script>

使用

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script src="https://cdn.bootcdn.net/ajax/libs/axios/1.2.0/axios.min.js"></script>
  <script>
    //1.axios:带请求体
    const bookInfo =
    {
      bookname: "如何三块钱活一天",
      author: "小明",
      publisher: "未知名出版社"
    }
    axios({
      url: "http://hmajax.itheima.net/api/books",
      method: "POST",
      data: {
        ...bookInfo,
        creator: "老张"
      }
    }).then(result => {
      //请求成功返回数据
      console.log(result)
    }).catch(error => {
      //请求错误返回结果
      console.log(error)
    })
    //2.axios:带参数查询
    //method:默认为GET
    axios({
      url: 'http://hmajax.itheima.net/api/books',
      method: 'GET',
      params: {
        // 外号:获取对应数据
        creator
      }
    }).then(result => {
      //请求成功返回数据
      console.log(result)
    }).catch(error => {
      //请求错误返回结果
      console.log(error)
    })
    //3.axios:FormData,上传文件或图片
    //使用 FormData 携带图片文件
    const fd = new FormData()
    //参数属性名称img,属性值 e.target.files[0],根据后端接口文档写
    fd.append('img', e.target.files[0])
    axios({
      url: 'http://hmajax.itheima.net/api/uploadimg',
      method: 'POST',
      data: fd
    }).then(result => {
      console.log(result)
    })
  </script>
</body>

</html>

自行封装

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <button class="reg-btn">注册用户</button>
  <script>
    function axiosHelper(configs) {
      return new Promise((resolve, reject) => {
        const xhr = new XMLHttpRequest()
        const endUrl = configs.params && `+?${new URLSearchParams(configs.params).toString()}`
        configs.url = endUrl ? (configs.url + endUrl) : configs.url
        xhr.open(configs.method || 'GET', configs.url)
        xhr.addEventListener('loadend', () => {
          if (xhr.status >= 200 && xhr.status < 300) {
            //请求成功
            resolve(JSON.parse(xhr.response))
          } else {
            //错误
            reject(new Error(xhr.response))
          }
        })
        //有请求体
        if (configs.data) {
          const jsonStr = JSON.stringify(configs.data)
          xhr.setRequestHeader('Content-Type', 'application/json')
          xhr.send(jsonStr)
        }
        else {
          xhr.send()
        }
      })
    }

    //使用axiosHelper函数,完成注册用户
    document.querySelector('.reg-btn').addEventListener('click', () => {
      axiosHelper({
        url: 'http://hmajax.itheima.net/api/register',
        method: 'POST',
        data: {
          username: 'itheima999',
          password: '666666'
        }
      }).then(result => {
        console.log(result)
      }).catch(error => {
        console.dir(error)
      })
    })
  </script>
</body>

</html>

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
axios封装是为了方便我们进行网络请求,通常会将其进行简单的二次封装以更好地管理接口。在二次封装axios时,可以使用axios.spread方法来处理多个请求的响应结果,也可以使用axios.all方法来同时发送多个请求,并通过then方法处理响应结果。在进行axios的二次封装时,可以按照以下步骤进行: 1. 导入axios文件 2. 在项目的vue.confin.js文件中进行配置 3. 利用axios.create方法创建一个axios实例 4. 执行请求拦截器和响应拦截器 5. 完成以上步骤后,就可以对axios进行二次封装 6. 在组件中通过import引入进行使用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [对axios进行的二次封装:](https://blog.csdn.net/AAAXEC/article/details/127836163)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [axios介绍以及对axios进行二次封装](https://blog.csdn.net/lq313131/article/details/127173938)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值