跳到主要内容

请求响应

XinAdmin 基于 Axios 封装了一套网络请求 createAxiosuseRequest

  • 自动取消重复请求
  • 自动错误/异常提示
  • 自动 loading
  • 简洁 data
  • 自动携带 token

响应参数

我们约定后端返回的数据结构,以下是响应JSON的格式:

declare namespace API {

type ErrorShowType =
| 0 // Success Message
| 1 // Warning Message
| 2 // Error Message
| 3 // Success Notification
| 4 // Warning Notification
| 5 // Error Notification
| 99; // Other

/** List response data format */
type ListResponse<T> = {
data: T[]
page: number
total: number
per_page: number
current_page: number
}

/** The response data format agreed upon with the back end */
interface ResponseStructure<T> {
success: boolean
data: T
errorCode?: number
msg?: string
showType?: ErrorShowType
status?: number
description?: string
placement?: 'top' | 'topLeft' | 'topRight' | 'bottom' | 'bottomLeft' | 'bottomRight',
}
}

其中 successdata 为必须的字段,其他字段为可选字段,XinAdmin 根据这个类型来自动处理错误。

参数详解:

参数是否必须描述
success业务请求是否成功
data业务请求返回的数据
errorCode错误状态码
msg错误提示
showType异常显示类型
status请求状态
description请求描述
placement提示位置

createAxios

createAxios 用来定义请求方法,并返回一个 Promise 对象,在 src/api 目录中存放了系统所有的网络请求函数,我们也建议您将封装的请求函数放置于此目录下 以便于 Api 的管理。

定义请求方法:

// src/api/index.ts
import { createAxios } from '@/utils/request.ts';

export function myApi() {
return createAxios({
url: '/your/api/path',
method: 'get',
});
}

// 直接使用
myApi.then(res => {
console.log(res)
})

createAxios 参数用于自定义 axios 配置可用配置项 请参考Axios网站,只有 url 是必需的,默认请求方法为 get。

createAxios({
url: '/index.php/admin/auth.menu/index',
method: 'get',
timeout: 3000, // 请求超时毫秒数,可覆盖默认的超时设定
// ...
})
信息

你也可以直接使用 axios.create 来深度自定义你的请求,请参考 Axios 文档

useRequest

useRequest 用来进一步的处理请求结果,并返回一个 useRequest 对象,他可以返回简洁的 data,并自动处理 loading,该对象包含以下属性:

  • data: 请求结果数据
  • loading: 请求加载状态
  • success: 请求是否成功
  • error: 请求失败响应
  • run: 手动执行请求
import { myApi } from '@/api/index.ts';
import useRequest from '@/utils/useRequest.ts';

const {data, loading, success, error, run} = useRequest(myApi, {
manual: true,
onSuccess: (res) => {
console.log(res);
},
onError: (err) => {
console.log(err);
}
});

参数说明:

  • apiFunction: 请求的函数,由 createAxios 创建的接口函数

  • options: 请求的配置项

  • options.manual: 是否自动执行请求,默认为 false

  • options.onSuccess: 请求成功回调

  • options.onError: 请求失败回调

  • options.onFinally: 请求结束回调