Vue axios和qs的安装和使用

本文介绍了axios的基本概念、工作原理、特性、兼容性和使用方法,特别指出axios在服务端渲染和Promise支持的优势。同时,讨论了qs库在数据序列化中的作用,包括qs.parse()和qs.stringify()的用途,并提供了使用示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

axios

什么是axios?

Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。

工作原理

axios为客户端提供了在客户端和服务器之间传输数据的功能(这源于其内部提供的一个API,即XMLHttpRequest ),同时支持浏览器端和服务端的请求。它还提供了一个全局变量,即process 对象,,通过它提供的有关信息,可以来控制当前 Node.js的 进程。这样就可以实现通过XMLHttpRequest和process来判断程序的运行环境,从而在不同的环境提供不同的http请求模块,实现客户端和服务端程序的兼容。

我们在做ssr服务端渲染时,也可以使用这个方法来判断代码当前的执行环境。整个axios请求流程返回的是一个promise对象,这样可以让我们的异步请求天然的支持promise,方便我们对于异步的处理。且axios可以根据数据的不同决定header的不同。

axios默认使用application/json格式来提交数据的,但当我们使用axios请求数据传参时优肯会出现无法正常获取数据的情况,这个时候就会发现原因是传递参数要将参数序列化。这个时候我们就可以通过qs来进行实现,qs会帮我们通过application/x-www-form-urlencoded来进行提交数据(application/json提交(无需使用qs进行处理))。

特性

  • 从浏览器中创建XMLHttpRequests
  • 从node.js创建http请求
  • 支持Promise API
  • 拦截请求和响应
  • 转换请求数据和响应数据
  • 取消请求
  • 自动转换JSON数据
  • 客户端支持防御XSRF

兼容性

支持所有主流浏览器、IE8以上

安装

安装axios:
cnpm install axios --save

引入axios://在main.js中
import axios from 'axios'
Vue.prototype.$axios = axios;

使用

//get方法
this.$axios.get(url,{
	params: {
		id: 18
	}
}).then(function(res){
	//成功回调
}).cache(function(err){
    //错误回调
}) 

//post方法
this.$axios.post(url,{
	id: 18
}).then(function(res){
	//成功回调
}).cache(function(err){
    //错误回调
}) 

//通过传递相关配置来进行请求
this.$axios({
	method: 'get', //post
	url:'https://www.baidu.com/',
	params: {
		id: 18
	}
}).then(function(res) {
	console.log(res)
})

具体使用方法看文档:axios中文文档

qs

简单来说,qs 是一个增加了一些安全性的查询字符串解析和序列化字符串的库。

安装

安装qs:
cnpm install qs

引入qs:
import qs from 'qs'
Vue.prototype.$qs = qs;

接下来vue中就可以使用了,例如:

this.$qs.stringify(obj);

this.$qs.parse(url);

通常使用的两种形式

1、qs.parse();作用是将URL解析成对象的形式 。

let url = 'a=1&b=2&c=3';
 
qs.parse(url);
 
//输出结果
{ a: '1', b: '2', c: '3'}

2、qs.stringify();作用是将对象序列化成URL的形式,以&进行拼接(拼接是由底层处理,无需手动操作)
例子1:

let obj= { a: "1", b: "2", c: "3"};

qs.stringify(obj);

//结果 a=1&b=2&c=3;

例子2:

qs.stringify({ a: ['b', 'c', 'd'] });

//结果 'a[0]=b&a[1]=c&a[2]=d'

重写默认情况
 
qs.stringify({ a: ['b', 'c', 'd'] }, { indices: false });
 
// 'a=b&a=c&a=d'

例子3:通过arrayFormat选项进行格式化输出

qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'indices' })
 
// 'a[0]=b&a[1]=c'
 
qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'brackets' })
 
// 'a[]=b&a[]=c'
 
qs.stringify({ a: ['b', 'c'] }, { arrayFormat: 'repeat' })
 
// 'a=b&a=c'
### 安装 AxiosQS MockJS 为了在 Vue 3 项目中集成 `axios`、`qs` `mockjs`,可以按照如下方法操作: #### 使用 npm 或 yarn 进行包管理工具安装依赖库 通过命令行执行以下指令来安装所需的软件包。 对于基于 Node.js 的环境而言,推荐使用 npm 或者 yarn 来作为包管理器。以下是具体的安装命令[^1]: ```bash npm install axios qs mockjs --save ``` 或者如果更倾向于使用 Yarn,则应运行下面这条语句: ```bash yarn add axios qs mockjs ``` 完成上述步骤之后,在项目的源码文件里就可以引入这些模块并开始编写相应的逻辑了。 例如可以在 main.ts 中导入它们以便在整个应用程序范围内访问: ```typescript // 导入第三方库 import axios from 'axios'; import * as Qs from 'qs'; // 如果需要序列化/反序列化查询字符串参数的话 import Mock from 'mockjs'; // 配置全局变量或插件... const app = createApp(App); app.config.globalProperties.$http = axios; app.config.globalProperties.$qs = Qs; // 应用程序实例挂载之前设置模拟数据服务端口监听(可选) if (process.env.NODE_ENV === 'development') { Object.keys(Mock).forEach(key => global[key] = Mock[key]); } ``` 这样就完成了 `axios`, `qs` 及 `mockjs` 在 Vue 3 项目中的基本配置工作[^2]。 另外值得注意的是,当涉及到 API 请求时,建议创建一个专门用于处理 HTTP 请求的服务层,从而更好地遵循单一职责原则以及提高代码复用率。这可以通过新建一个 service 文件夹并将不同类型的请求分别封装成函数实现[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值