Skip to content

基于 useAxios 的请求函数 ^0.4.0

useAxios 是 vueuse 集成里面的函数,在本项目内做了二次封装了。

这是一个接口请求用的工具函数,使用方式如下:

导入函数

ts

自动导入

如果你使用的是 typescript,你不需要手动导入该内容。本项目已经实现自动导入功能了。

直接使用该函数名即可。

选项配置类型

UseAxiosOptionsJsonVO,是包含我们项目返回值的一个工具类型。我们在定义接口时,可以使用 useAxios 的 options 配置,用该配置实现接口成功和失败的回调定义。

定义 query 传参的接口

如下例子所示:

query 传参的接口
ts
import type { ParamsQueryKey, UseAxiosOptionsJsonVO } from "composables/use-request";

interface ToDelete {
	/** 分类的唯一编号 */
	id: string;
}

/**
 * 删除分类接口
 * @see https://app.apifox.com/link/project/5901227/apis/api-264076055
 */
export function queryExample<T = string>(options: UseAxiosOptionsJsonVO<T>) {
	return useRequest<ParamsQueryKey, T, ToDelete>({
		url: "/sysmanager/catagory/remove-catagory",
		options,
		httpParamWay: "query",
		config: {
			method: "delete",
			data: {
				id: "",
			},
		},
	});
}
  • ParamsQueryKey 类型是用来约束该函数传参时需要填写那些字段的。
  • httpParamWay 要填写为 query

使用 query 接口

你可以使用 useAxios 函数所提供的全部响应式工具和回调函数。

使用 query 接口的测试用例
ts
import { it } from "vitest";

import { queryExample } from "./query.example.ts";

it("使用 query 接口", async () => {
	const { execute, data, isLoading, isFinished } = queryExample({
		onSuccess(data) {
			console.log("query onSuccess", data);
		},
		onError(error) {},
		onFinish() {},
	});
	// 主动的做接口请求 从回调函数内获取返回值 或者直接使用解构出来的响应式 data 对象
	await execute({
		data: {
			id: "123",
		},
	});
	console.log("查看简单的 data.value ", data.value);
});

定义 body 传参的接口

body 传参的接口
ts
import type { ParamsBodyKey, UseAxiosOptionsJsonVO } from "composables/use-request";

/**
 * 分类对象例子
 * @description
 * 新增 编辑 表格数据
 * @see https://app.apifox.com/link/project/5901227/apis/api-264076051
 */
export interface CatagoryExample {
	/**
	 * 图标的唯一编号
	 */
	iconId?: string;
	/**
	 * 分类的唯一编号
	 */
	id?: string;
	/**
	 * 分类名称
	 */
	name?: string;
	/**
	 * 上级id
	 */
	parentId?: string;
}

/**
 * 新增分类接口
 * @see https://app.apifox.com/link/project/5901227/apis/api-264076051
 */
export function bodyExample<T = string>(options: UseAxiosOptionsJsonVO<T>) {
	return useRequest<ParamsBodyKey, T, CatagoryExample>({
		httpParamWay: "body",
		options,
		url: "/sysmanager/catagory/add-catagory",
		config: {
			data: {},
			method: "POST",
		},
	});
}
  • ParamsBodyKey 类型是用来约束该函数传参时需要填写那些字段的。
  • httpParamWay 要填写为 body

使用 body 接口

你可以使用 useAxios 函数所提供的全部响应式工具和回调函数。

使用 body 接口的测试用例
ts
import { it } from "vitest";

import { bodyExample } from "./body.example.ts";

it("使用 body 接口", async () => {
	const { execute, data, isLoading, isFinished } = bodyExample({
		onSuccess(data) {
			console.log("body onSuccess", data);
		},
		onError(error) {},
		onFinish() {},
	});
	// 主动的做接口请求 从回调函数内获取返回值 或者直接使用解构出来的响应式 data 对象
	await execute({
		data: {
			id: "123",
			iconId: "456",
			name: "分类名称",
			parentId: "上级id",
		},
	});
	console.log("查看简单的 data.value ", data.value);
});

定义 path 传参的接口

path 传参的接口
ts
import type { ParamsPathKey, UseAxiosOptionsJsonVO } from "composables/use-request";

/**
 * path传参例子
 * @see https://app.apifox.com/link/project/5901227/apis/api-266276392
 */
export function pathExample<T = string>(options: UseAxiosOptionsJsonVO<T>) {
	return useRequest<ParamsPathKey, T>({
		url: "/sysmanager/typegroup/remove/{id}",
		options,
		httpParamWay: "path",
		config: {
			url: "/sysmanager/typegroup/remove/{id}",
			method: "delete",
		},
	});
}
  • ParamsPathKey 类型是用来约束该函数传参时需要填写那些字段的。
  • httpParamWay 要填写为 path

path 传参的 url 可以乱写

这里为了实现类型约束,会强制要求你补全填写 url,但是由于 path 传参的 url 最终是前端自己拼接的,所以此处的 url 事实上是不生效的。你可以乱填写。

但是为了语义化,建议你填写看起来比较正常的地址。

比如本例子就填写了看起来能读懂的地址:

json
{
	"url": "/sysmanager/typegroup/remove/{id}"
}

使用 path 接口

你可以使用 useAxios 函数所提供的全部响应式工具和回调函数。

使用 path 接口的测试用例
ts
import { it } from "vitest";

import { pathExample } from "./path.example.ts";

/** 要被删除项的id 需要自己准备好 */
const id = "wgwegherth";

it("使用 path 接口", async () => {
	const { execute, data, isLoading, isFinished } = pathExample({
		onSuccess(data) {
			console.log("path onSuccess", data);
		},
		onError(error) {},
		onFinish() {},
	});
	// 主动的做接口请求 从回调函数内获取返回值 或者直接使用解构出来的响应式 data 对象
	await execute({
		url: `/sysmanager/typegroup/remove/${id}`,
	});
	console.log("查看简单的 data.value ", data.value);
});

path 传参方式

path 传参方式要求前端在接口请求路径上传递参数,请注意填写值的格式。需要前端自己拼接接口参数。

先拼接,再做接口请求。

贡献者

The avatar of contributor named as ruan-cat ruan-cat

页面历史