09-axios在Vue中的导入与配置

09-axios

  • 前言
  • 首先简单了解什么是Axios?
    • 以上完成后就可以使用了

前言

我们接着上一篇文章 08-路由地址的数据获取 来讲。


下一篇文章 10-vuex在Vue中的导入与配置

首先简单了解什么是Axios?

Axios是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端,本质上也是对原生XHR的封装,只不过它是Promise的实现版本,符合最新的ES规范。

关于axios的特点,可以查看axios中文文档,还可以了解一下axios, ajax和fetch的详细比较内容。

接下来开始安装axios,在项目目录下执行npm i axios(不同的node版本,成功后的提示不同)

在这里插入图片描述

安装成功后进行引入,在项目目录下src文件夹里创建新的utils文件夹,然后,在文件夹里创建axios.js

/utils/axios.js

/axios/index.js

/utils/request.js

// 1、引入axios内容
import axios from 'axios'

// 2、设置请求默认内容
// 请求服务器地址
axios.defaults.baseURL = 'https://www.xxxx.com:8080'
// 跨域请求是否提供凭据信息(cookie、HTTP认证及客户端SSL证明等),也可以简单的理解为,当前请求为跨域类型时是否在请求中协带cookie。
axios.defaults.withCredentials = true
// 请求头中X-Requested-With字段值为XMLHttpRequest
axios.defaults.headers['X-Requested-With'] = 'XMLHttpRequest'
// 请求头中携带token值
axios.defaults.headers['token'] = localStorage.getItem('token') || ''
// 使用post请求时,发送的数据类型(Content-Type)为 application/json
axios.defaults.headers.post['Content-Type'] = 'application/json'

// axios使用拦截器,我们下面会讲一下拦截器的定义
axios.interceptors.response.use(res => {
  // 服务器返回值非正常情况下执行的代码
  if (typeof res.data !== 'object') {
    alert('服务器异常!')
    return Promise.reject(res)
  }
  if (res.data.resultCode != 200) { // 浏览器状态码不为200(正常)
    if (res.data.message) alert(res.data.message)  //判断是否有错误信息,有则打印错误信息
    if (res.data.resultCode == 416) { // 浏览器状态码为416(未登录)
      alert('未登录,请先登录!')
    }
    return Promise.reject(res.data)
  }
  // 服务器返回值正常情况下执行的代码
  return res.data
})
// 导出axios 实例
export default axios

// 1、引入axios内容
import axios from 'axios'

// 2、设置请求默认内容
// 请求服务器地址
axios.defaults.baseURL = 'https://www.xxxx.com:8080'
// 跨域请求是否提供凭据信息(cookie、HTTP认证及客户端SSL证明等),也可以简单的理解为,当前请求为跨域类型时是否在请求中协带cookie。
axios.defaults.withCredentials = true
// 请求头中X-Requested-With字段值为XMLHttpRequest
axios.defaults.headers['X-Requested-With'] = 'XMLHttpRequest'
// 请求头中携带token值
//axios.defaults.headers['token'] = localStorage.getItem('token') || ''
// 使用post请求时,发送的数据类型(Content-Type)为 application/json
axios.defaults.headers.post['Content-Type'] = 'application/json'

axios.interceptors.request.use(config => {
  config.headers['token'] = localStorage.getItem('token') || '';
  return config
})


// axios使用拦截器,我们下面会讲一下拦截器的定义
axios.interceptors.response.use(res => {
  // 服务器返回值非正常情况下执行的代码
  // if (typeof res.data !== 'object') {
  //   alert('服务器异常!')
  //   return Promise.reject(res)
  // }
  // if (res.data.resultCode != 200) { // 浏览器状态码不为200(正常)
  //   if (res.data.message) alert(res.data.message)  //判断是否有错误信息,有则打印错误信息
  //   if (res.data.resultCode == 416) { // 浏览器状态码为416(未登录)
  //     alert('未登录,请先登录!')
  //   }
  //   return Promise.reject(res.data)
  // }
  // 服务器返回值正常情况下执行的代码
  return res.data
})
// 导出axios 实例
export default axios

关于拦截器

​ 如果我们使用中需要统一处理所有 http 请求和响应, 就需要使用 axios 拦截器。

使用拦截器的原因:

​ 若出现请求数多的情况下,我们将会用到 axios 的一个API:拦截器。
​ 页面发送http请求,很多情况我们要对请求和其响应进行特定的处理,
​ 如果每个请求都附带后端返回的token,我们需要在拿到response之前loading动画的展示等。

拦截器的分类:

​ 拦截器分为 请求(request)拦截器和 响应(response)拦截器。

以上完成后就可以使用了

接下来以get请求为例,使用方式如下:

this.axios.get(url).then(res => {
      //请求成功,触发then中的函数
      console.log(res)  
    })
     .catch(error =>
      //请求失败,触发catch中的函数 可省略
      console.log(error)
    )

某商城的API接口:http://backend-api-01.newbee.ltd/api/v1/index-infos

<template>
  <div id="app">
    <ul>
      <li v-for="(good, index) in list" :key="index">
      {{ good }}
      </li>
    </ul>
  </div>
</template>
 <script>
 import axios from "./utils/axios";
export default {
  data() {
    return {
      list: [],
    };
  },
  mounted(){
    axios.get("http://backend-api-01.newbee.ltd/api/v1/index-infos")
    .then(res => {
      console.log(res);
      this.list = res.data.hotGoodses
    })
  }
};
</script>

请求结果自行判断

关于post请求方式与get类似,不同点在于地址url和参数params分开传递,使用方式如下:

axios.post(url, params).then(res => {
      //请求成功,触发then中的函数
      console.log(res)  
    })
     .catch(error =>
      //请求失败,触发catch中的函数 可省略
      console.log(error)
    )

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/734141.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

D触发器(D Flip-Flop)与D锁存器(D Latch)

1 基础概念 我们先来简单回顾一下D触发器&#xff08;D flip-flop&#xff09;和D锁存器&#xff08;D latch&#xff09;的概念&#xff0c;以及它们在数字电路中的作用。 1.1 D触发器&#xff08;D Flip-Flop&#xff09; D触发器是一种数字存储器件&#xff0c;它在时钟信号…

VBA学习(16):工作表事件示例:输入数据后锁定单元格

在工作表单元格中输入数据后&#xff0c;该单元格就被锁定&#xff0c;不能再编辑。 打开VBE&#xff0c;在工程资源管理器中双击该工作表名称打开其代码模块&#xff0c;在其中输入下面的代码&#xff1a; 假设整个工作表的LockedFalse Private Sub Worksheet_Change(ByVal …

超大cvs文件导入MySQL

1 XXX.cvs 太大 使用cvs拆分HugeCSVSplitter_jb51工具进行拆分&#xff0c;Line Count 设置为1,000,000 注意&#xff1a;1 拆分后除第一个子cvs文件含有标题外&#xff0c;其他的子文档都不含有标题行&#xff1b; 2 后一个文档的第一行为前一个文档的…

【尚庭公寓SpringBoot + Vue 项目实战】用户管理(十五)

【尚庭公寓SpringBoot Vue 项目实战】用户管理&#xff08;十五&#xff09; 文章目录 【尚庭公寓SpringBoot Vue 项目实战】用户管理&#xff08;十五&#xff09;1、业务介绍2、接口实现2.1、根据条件分页查询用户列表2.2、根据ID更新用户状态 1、业务介绍 用户管理共包含两…

数据结构与算法-B(B-)树的简单实现

B(B-)树定义 B树&#xff08;或B-tree&#xff09;是一个在计算机科学中广泛使用的数据结构&#xff0c;它是一种自平衡的树&#xff0c;能够保持数据有序。 以下是B树的特性 每个节点最多右m个孩子&#xff0c;二叉树是B-树的特例&#xff0c;其有2个孩子。除了叶节点和根节点…

【Gradio】从 BigQuery 数据创建实时仪表板

Google BigQuery 是一个基于云的服务&#xff0c;用于处理非常大的数据集。它是一个无服务器且高度可扩展的数据仓库解决方案&#xff0c;使用户能够使用类 SQL 查询分析数据。 在本教程中&#xff0c;我们将向您展示如何在 Python 中查询 BigQuery 数据集&#xff0c;并使用 g…

IntelliJ IDE 插件开发 | (十)主题插件开发入门

系列文章 本系列文章已收录到专栏&#xff0c;交流群号&#xff1a;689220994&#xff0c;也可点击链接加入。 前言 在前面的章节中&#xff0c;我们介绍的都是功能性插件的开发内容&#xff0c;本文则会介绍一下主题类插件的开发方式。不过本文也只是带大家入个门&#xff…

书生·浦语大模型LagentAgentLego智能体应用搭建 第二期

文章目录 智能体概述智能体的定义智能体组成智能体范式 环境配置Lagent&#xff1a;轻量级智能体框架实战Lagent Web Demo用 Lagent 自定义工具 AgentLego&#xff1a;组装智能体“乐高”直接使用AgentLego作为智能体工具使用 用 AgentLego 自定义工具 智能体概述 智能体的定义…

aardio - 【库】lock 跨进程读写锁

import win.ui; /*DSG{{*/ var winform win.form(text"aardio form";right272;bottom203;topmost1) winform.add( button{cls"button";text"无锁演示";left27;top132;right120;bottom184;z2}; button2{cls"button";text"有锁演示…

邀请函 | 人大金仓邀您相聚第十三届中国国际国防电子展览会

盛夏六月 备受瞩目的 第十三届中国国际国防电子展览会 将于6月26日至28日 在北京国家会议中心盛大举办 作为数据库领域国家队 人大金仓 将携系列行业解决方案 和创新实践成果亮相 期待您莅临指导 ↓↓↓↓↓↓ CIDEX 2024 中国国际国防电子展览会&#xff08;简称CIDEX&#xf…

Linux环境搭建之CentOS7(包含静态IP配置)

&#x1f525; 本文由 程序喵正在路上 原创&#xff0c;CSDN首发&#xff01; &#x1f496; 系列专栏&#xff1a;虚拟机 &#x1f320; 首发时间&#xff1a;2024年6月22日 &#x1f98b; 欢迎关注&#x1f5b1;点赞&#x1f44d;收藏&#x1f31f;留言&#x1f43e; 安装VMw…

在scrapy中使用Selector提取数据

经院吉吉&#xff1a; 首先说明一下&#xff0c;在scrapy中使用选择器是基于Selector这个对象滴&#xff0c;selector对象在scrapy中通过XPATH或是CSS来提取数据的&#xff0c;我们可以自己创建selector对象&#xff0c;但在实际开发中我们不需要这样做&#xff0c;因为respons…

【Linux系统】多线程

本篇博客继上一篇《线程与线程控制》&#xff0c;又整理了多线程相关的线程安全问题、互斥与锁、同步与条件变量、生产消费模型、线程池等内容&#xff0c;旨在让读者更加深刻地理解线程和初步掌握多线程编程。&#xff08;欲知线程的相关概念、线程控制的相关接口等&#xff0…

基于SpringBoot+协同过滤算法的家政服务平台设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;…

小米红米全机型TWRP下载刷入教程-获取root权限--支持小米14/红米K7Pro/红米Turbo3等机型

刷机注意&#xff1a; 本教程为小米红米全机型专用TWRP_Recovery合集&#xff0c;ROM乐园独家首发整理。请确保你的电脑能正确连接你的手机&#xff0c;小米红米手机需要解锁BL&#xff0c;请参照下面教程 小米MIUI澎湃OS解锁BL教程&#xff1a;小米手机官方解锁BootLoader图文…

Python发送Email的性能怎么样?如何配置?

Python发送Email怎么配置SMTP&#xff1f;批发邮件的方法技巧&#xff1f; Python是一种广泛使用的编程语言&#xff0c;因其简洁和强大的功能深受开发者喜爱。在许多应用场景中&#xff0c;Python发送Email是一个常见需求。那么&#xff0c;Python发送Email的性能怎么样呢&am…

【SpringBoot】Spring Boot 中高级特性详解

文章目录 1. 异步处理1.1 什么是异步处理&#xff1f;1.2 实现异步处理1.2.1 启用异步支持1.2.2 使用 Async 注解1.2.3 调用异步方法 2. 安全管理2.1 Spring Security 集成2.2 基础安全配置2.2.1 添加依赖2.2.2 默认配置2.2.3 自定义用户认证 3. 监控和调试3.1 Spring Boot Act…

fastapi教程(一):初识 fastapi

FastAPI 是一个用于构建 API 的现代、快速&#xff08;高性能&#xff09;的 web 框架&#xff0c;使用 Python 并基于标准的 Python 类型提示。 关键特性: 快速&#xff1a;可与 NodeJS 和 Go 并肩的极高性能&#xff08;归功于 Starlette 和 Pydantic&#xff09;。最快的 …

Excel 如何复制单元格而不换行

1. 打开excle, sheet1右键单击>查看代码>插入>模块 输入代码 Sub CopyText() Updated by NirmalDim xAutoWrapper As ObjectSet xAutoWrapper New DataObject or GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")xAutoWrapper.SetText ActiveC…

数据库精选题(一)(关系数据库设计)

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;数据库 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 前言 练习题 题型一&#xff1a;判断关系…