【vue2小知识】实现axios的二次封装

这篇具有很好参考价值的文章主要介绍了【vue2小知识】实现axios的二次封装。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

vue2 axios封装,vue2,AJAX,前端,vue.js,javascript,ajax

🥳博       主:初映CY的前说(前端领域)

🌞个人信条:想要变成得到,中间还有做到!

🤘本文核心:在vue2中实现axios的二次封装

目录

一、平常axios的请求发送方式

二、axios的一次封装

三、axios的二次封装

 四、总结


【前言】我们在使用axios发送请求的时候,如果是直接使用axios用来发送我们的请求,这样的话我们需要写url、请求方式methood、如果有请求参数的话我们的axios的代码段会看起来稍微有点多并且的话我们的代码段统一的管理与后期的修改。故此在此基础上我们就需要对我们的axios进行封装来便于我们对我们接口的统一管理同时也使得代码看起来简洁。


一、平常axios的请求发送方式

vue2 axios封装,vue2,AJAX,前端,vue.js,javascript,ajax

 我们进页面进行发送请求见下:

vue2 axios封装,vue2,AJAX,前端,vue.js,javascript,ajax

 可以看到我们的请求可以成功的将我们的请求发出去并且可以收到响应。这是最基础的发送方式,我们可以看到

①我们的url中有很多重复的部分

②每个页面都这样写请求代码段多

③业务没有抽离开,不便于我们管理我们接口(多组件的时候)

 综上,我们简化一下我们的请求见下↓

二、axios的一次封装

我们会在src/utils创建一个request.js的文件来存放我们的基地址与拦截器

当我们写了基地址我们每次写请求的时候就不需要写那一大段重复的代码

/* 封装axios用于发送请求 */
import axios from 'axios'

/*
(1)request 相当于 Axios 的实例对象
(2)为什么要有request,而不是直接用axios
  * 项目开发中,有可能会有两个基地址
  * 不同的接口配置不同(有的要token,有的不要token)
*/
const request = axios.create({
  baseURL: '/home/', // 设置基地址,博主这个请求跨域了因此我设置了代理服务器,因此基地址才这么短
  timeout: 5000 // 请求超时:当5s没有响应就会结束请求
})

// 添加请求拦截器,一下内容是axios的拦截器,可以不用写
request.interceptors.request.use(
  function (config) {
    // 在发送请求之前做些什么
    return config
  },
  function (error) {
    // 对请求错误做些什么
    return Promise.reject(error)
  }
)

// 添加响应拦截器
request.interceptors.response.use(
  function (response) {
    // 对响应数据做点什么
    return response.data
  },
  function (error) {
    // 对响应错误做点什么
    return Promise.reject(error)
  }
)

export default request

vue2 axios封装,vue2,AJAX,前端,vue.js,javascript,ajax

 可见当我们写下了基地址之后我们就完成我们的第一次封装,引入了基地址与拦截器

三、axios的二次封装

把接口的路径写在了页面里面 : 如果接口很多,万一以后接口路径变了。怎么办呢? 一个一个文件去找是不是太麻烦了?

解决方案 : 把每一个请求接口单独封装

通俗一点来说:我们根据我们的业务来写当前页面需要的接口,这样接口便于管理。比如:我A页面需要三个接口,B页面需要五个接口。我们在一个js文件中写下八个接口吗?可以但是不推荐。

我们可以尝试将A与B两个页面的接口分离出来。

类似于这样的:

vue2 axios封装,vue2,AJAX,前端,vue.js,javascript,ajax

 好的,基本概念了解了,我们尝试来抽离下我们的接口

vue2 axios封装,vue2,AJAX,前端,vue.js,javascript,ajax

 我们来测试下:

vue2 axios封装,vue2,AJAX,前端,vue.js,javascript,ajax

【源代码以及接口文档补充】

下面是我的接口的地址:

vue2 axios封装,vue2,AJAX,前端,vue.js,javascript,ajax

 vue2 axios封装,vue2,AJAX,前端,vue.js,javascript,ajax

App.vue

<template>
<div>
  <button @click="doclick">点我发送请求1</button>
  <button @click="doclick2(6)">点我发送请求2</button>
</div>
</template>

<script>
import { loadCaatagory } from '@/api/B'
import { loadBrand } from '@/api/A'

export default {
  methods: {
    async doclick () {
      const res = await loadCaatagory()
      console.log(res, '请求1')
    },
    async doclick2 (num) {
      const res = await loadBrand(num)
      console.log(res, '请求2')
    }
  }
}
</script>

<style>

</style>

 A.js

import request from '@/utils/request'

// 获取品牌
export function loadBrand (limit) {
  return request({
    // url: 'brand',
    url: `brand?limit=${limit}`,
    method: 'GET'
  })
}

B.js

import request from '@/utils/request'
// 获取商品头部
export function loadCaatagory () {
  return request({
    url: 'category/head',
    method: 'GET'
  })
}

vue.config

module.exports = {
  transpileDependencies: true,
  devServer: {
    proxy: {
      '/home': {
        target: 'http://pcapi-xiaotuxian-front-devtest.itheima.net' // 请求代理地址用来解决跨域
      }
    }
  }
}

 四、总结

我们封装axios是为了将我们的接口根据模块的不同而分离开来,便于我们的管理。

第一次封装:提取公共部分

第二次封装:根据业务模块分离接口

愿你有所收获,本文就此结束!文章来源地址https://www.toymoban.com/news/detail-789826.html

到了这里,关于【vue2小知识】实现axios的二次封装的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • axios的二次封装

    axios的二次封装

    1 axios是干什么的? XMLHttpRequest、jq、fetch、axios都是用来向服务器端发送请求,并获得响应 2 为什么要进行二次封装axios? 为了封装请求拦截器,响应拦截器 请求拦截器:可以在发送请求之前可以处理一些业务 响应拦截器:当服务器数据返回以后,可以处理一些事情 在src下创

    2023年04月12日
    浏览(33)
  • 关于axios的二次封装

    @1 第一步 我们一般都会先导入axios         import axios from ‘axios’ @2 第二步 创建axios的实例 可以同时创建多个实例 每个实例配置不同         const http = axios.create( {                  // 这里面可以做一些基础的配置 比如基础路径 ,axios 请求超时的时间            

    2024年02月03日
    浏览(35)
  • Axios的二次封装(简单易懂)

    是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端 简单的理解就是ajax的封装 在使用Vue.js框架开发前端项目时 会经常发送ajax请求服务端接口 在开发过程中 需要对axios进一步封装 方便在项目中的使用 从浏览器中创建 XMLHttpRequest 从 node.js 发出 http 请求 支持 Promise API 拦截请求

    2023年04月09日
    浏览(84)
  • 二次封装ajax和axios

    2024年02月14日
    浏览(33)
  • 前端vue2中axios封装请求数据,教会你封装教会你请求数据 简单易懂,轻松学会axios封装请求数据 看一眼就会 手把手教会

    2、完成上面的步骤还不够,还需要再创建一个文件夹api,然后在文件夹里面创建自定义的文件名(我创建的是cartApi.js)文件名根据自己的需求命名 下面就是根据自己的请求接口以及数据参数请求,下面的请求是一些常见的post、get请求以及传参啥的(仅供参考,可以参考下面

    2024年02月03日
    浏览(33)
  • Vue3中搜索表单的二次封装

    最近使用Vue3+ElementPlus开发项目,从整体上构思组件的封装。能写成组件的内容都进行封装,方便多个地方使用。 受AntDesign的启发,在项目中有搜索表单+table+分页的地方可以封装为一个组件,只需要对组件传入table的列,组成一个配置项,通过配置可以显示搜索表单、table项的

    2024年02月11日
    浏览(30)
  • 前端开发中的ajax请求、axios封装

    前端开发中的ajax请求、axios封装

    目录 浏览器http请求 同步 js标签跨域、url 异步ajax、websock协议 ajax是异步的技术术语,最早的api是xhr(XMLHttpRequest) fetch es6 api axios 封装axios(无论用requst还是axios请求都会生效) src/utils/request.ts请求/响应拦截器封装 ts post请求request.post(url)和 通用请求request({url,method:\\\'post\\\'})对象

    2024年02月11日
    浏览(24)
  • vue3富文本编辑器的二次封装开发-Tinymce

    vue3富文本编辑器的二次封装开发-Tinymce

    欢迎点击领取 -《前端开发面试题进阶秘籍》:前端登顶之巅-最全面的前端知识点梳理总结 专享链接 简介 1、安装:pnpm add tinymce @tinymce/tinymce-vue === Vue3 + tinymce + @tinymce/tinymce-vue 2、功能实现图片上传、基金卡片插入、收益卡片插入、源代码复用、最大长度限制、自定义表情包

    2024年02月07日
    浏览(36)
  • vue2 利用网络代理axios实现开发环境前端跨域

    vue2 利用网络代理axios实现前端跨域 vue.config.js 配置代理 vue文件 实现开发环境跨域请求 测试生产环境跨域跳转 https://blog.csdn.net/weixin_43858851/article/details/137518111?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22137518111%22%2C%22source%22%3A%22weixin_43858851%22%7D

    2024年04月12日
    浏览(8)
  • Vue电商项目--axios二次封装

    Vue电商项目--axios二次封装

    刚刚经过postman工具测试,发现接口果然发生了改变。 新的接口为 http://gmall-h5-api.atguigu.cn   如果服务器返回的数据code字段200,代表服务器返回数据成功 整个项目,接口前缀都有/api字样 XmlHttpRequest,fetch,JQ,Axios这些都是很优秀的网络请求库 为什么需要进行二次封装axios? 请

    2024年02月01日
    浏览(11)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包