封装axios及简单应用举例

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

第一步:具体封装工具:

在项目根目录下创建utils目录,然后在其中创建文件http.js:

// 二次封装axios
import axios from 'axios'

// 全局配置
// 根据环境变量区分接口默认地址(前缀)
switch (process.env.NODE_ENV) {
  case 'prod':
    axios.defaults.baseURL = 'http:/www.hcshow.online/blog'
    break
  case 'test':
    axios.defaults.baseURL = 'http://localhost/blog'
    break
  default:// dev
    axios.defaults.baseURL = 'http://127.0.0.1/blog'
}
// 请求超时时间
axios.defaults.timeout = 6000

// CROS跨域是否允许凭证
axios.defaults.withCredentials = true

// axios.post默认情况下传递到后台的数据是JSON格式的
// 通过下面方式设置POST请求头,告诉服务器请求主体的数据格式:a=aaaa&b=bbbb
// 需要导入 import qs from 'qs'
// axios.defaults.headers['Content-Type'] = 'application/x-www-form-urlencoded'
// axios.defaults.transformRequest = data => qs.stringify(data)

// 请求拦截器:axios前置拦截
axios.interceptors.request.use(config => { // config指请求对象
// 通过axios请求拦截器添加token,保证拥有获取数据的权限
  const token = window.localStorage.getItem('token')
  if (token !== null) {
    config.headers.Authorization = token
  }
  return config
}, error => {
  // 如果拦截失败返回失败信息
  return Promise.reject(error)
})

//   // 自定义响应成功的HTTP状态码(一般情况下用配置)
// // 设置什么才算成功,什么时候才算失败
// axios.defaults.validateStatus = status => {
//   // 默认大于等200小于300的才算成功
//   return /^(2|3)\d{2}$/.test(status) //设置2和3开头的都算成功
// }

// 响应拦截器:axios后置拦截
axios.interceptors.response.use(res => {
    return res
}, error => {
  // 请求已发送,只不状态码不是200系列,设置不同状态码的不同处理
  if (error.response) { // 如果服务器有返回信息
    switch (error.response.status) {
      case 401: // 当前请求需要用户登录(一般是未登录)
        break
      case 403: // 服务器已经理解请求,但是拒绝执行它(一般是TOKEN过期)
        localStorage.removeItem('token')
        // 跳转的登录页面
        break
      case 404: // 请求失败,资源没有找到
        break
    }
    return Promise.reject(error.response)
  } else { // 如果服务器没有返回信息
    // 断网处理
    if (!window.navigator.onLine) {
      // 网络断开时,让其跳转到其它网页
      return
    }
    return Promise.reject(error)
  }
})

export default axios

如果要使项目能够根据环境变量区分接口默认地址,需要在package.json中进行配置:

"scripts": {
  "serve": "vue-cli-service serve",
  "comment1": "测试环境",
  "serve:test": "set NODE_ENV=test&&vue-cli-service serve",
  "comment1": "生产环境",
  "serve:prod": "set NODE_ENV=prod&&vue-cli-service serve",
……
},

之后采用npm run serve:test会启动测试环境,此时对应的服务器连接根地址为:http://localhost/blog……

第二步:服务器代码

@GetMapping("/f11")
public String f11(Integer pageNum, Integer pageSize) {
    return pageNum + " : " + pageSize;
}
@PostMapping("/f21")
public String f21(@RequestBody String param) {
    return param;
}

第三步:API集中式管理

采用集中式管理API是为了便于管理接口。
在项目根目录下创建目录api,然后依次在其中创建user.js、blog.js、api.js:文章来源地址https://www.toymoban.com/news/detail-664453.html

  • user.js
import axios from '../utils/http'

function login () {
  return axios.post('/f21', {
    data: {
      username: 'zhagnsan',
      password: '1234'
    }
  })
}

export default {
  login
}
  • blog.js
import axios from '../utils/http'

function getBlogsWithPage () {
  return axios.get('/f11', {
    params: {
      pageNum: 11,
      pageSize: 8
    }
  })
}

export default {
  getBlogsWithPage
}
  • api.js:用来进行集中导入
// 定义数据请求的唯一入口
import user from './user'
import blog from './blog'

export default {
  user,
  blog
}

第四步:在main.js文件中全局引入:

import api from './api/api'
Vue.prototype.$api = api

第五步:在vue页面中具体使用:

<template>
  <div class="home">
    <button @click="getFun">发送get请求</button>
    <button @click="postFun">发送post请求</button>
  </div>
</template>

<script>
  export default {
    methods: {
      getFun () {
        this.$api.blog.getBlogsWithPage().then(res => {
          console.log(res)
        })
      },
      postFun () {
        this.$api.user.login().then(res => {
          console.log(res)
        })
      }
    }
  }
</script>

启动项目测试

到了这里,关于封装axios及简单应用举例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • vue对axios进行二次封装

            在Vue中,对Axios进行二次封装可以提高代码的可重用性和可维护性。通过封装,我们可以将请求的配置、错误处理和拦截器等逻辑集中到一个地方,方便后续的修改和扩展。此外,封装Axios还可以简化代码,减少重复的请求配置,提高开发效率。因此,对Axios进行二

    2024年01月21日
    浏览(40)
  • 【vue2小知识】实现axios的二次封装

    🥳博       主: 初映CY的前说(前端领域) 🌞个人信条: 想要变成得到,中间还有做到! 🤘 本文核心 :在vue2中实现axios的二次封装 目录 一、平常axios的请求发送方式 二、axios的一次封装 三、axios的二次封装  四、总结 【前言】我们在使用axios发送请求的时候,如果是直

    2024年02月01日
    浏览(48)
  • Vue3和TypeScript下基于Axios的二次封装教程

    学习如何在Vue3项目中使用TypeScript和Axios进行二次封装,实现更灵活的网络请求处理。详细教程包括拦截器设置和类型扩展。

    2024年02月05日
    浏览(119)
  • 个人博客-SpringBoot+Vue3项目实战(6)- 二次封装Axios

    在上文中,我们封装了统一的后端数据返回结果,有了标准化的接口数据,我们就可以针对它,在前端发送接收时,进行预处理。 通常在一个企业级或者个人开源的项目中, Axios 会被二次封装。 二次封装的好处有哪些呢? 统一 url 配置 统一 api 请求 request (请求)拦截器,例

    2024年02月06日
    浏览(62)
  • 【Vue项目笔记心得】postman接口测试、axios二次封装、api接口统一管理

    1、postman接口测试 下载地址:Download Postman | Get Started for Free   2、axios二次封装 (1)为什么进行二次封装axios? 请求拦截器、响应拦截器: 请求拦截器 :可以在发请求之前可以处理一些业务 响应拦截器 :当服务器数据返回以后,可以处理一些事情 安装axios: npm install ax

    2023年04月08日
    浏览(40)
  • Axios的二次封装(简单易懂)

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

    2023年04月09日
    浏览(102)
  • vue2使用axios封装请求数据,教会你封装,简单易懂,轻松学会axios封装请求数据 看一眼就会 手把手教会

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

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

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

    2024年02月03日
    浏览(46)
  • vue3 ts element plus form表单二次封装详细步骤 (附参数、类型详细介绍及简单使用示例)

    上篇table 表格封装 讲到项目中经常会用到 table 表格,所以做了封装。当然,form 表单使用的频率依然很高,所以和封装 table 表格的思路相似,对 form 表单也做了一个二次封装的组件。 查看国内预览站 查看国外预览站 1. EasyForm 表单组件封装 src/components/EasyForm/index.vue Form 表单

    2024年02月07日
    浏览(60)
  • vue封装axios

    (4条消息) Vue——axios的二次封装_前端杂货铺的博客-CSDN博客 1.下载axios依赖包 2.在src目录下新建utils文件夹,在utils文件夹下新建request.js文件  3.request.js 方式1:(最常用使用) 在src目录下新建api文件夹,在api文件夹中新建index.js用于存放请求接口 api目录下的index.js 页面使用:

    2024年02月11日
    浏览(31)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包