Appearance
网络请求
系统的网络请求通过 Axios 实现,我们对其进行了额外的封装:
- 自动携带
token - 无感刷新
token - 携带当前语言
- 可选的
Loading - 自动取消重复请求
- 自动错误/成功提示
- 异常处理
TIP
1、在 BuildAdmin 的 /web/src/api/ 目录,存放了系统所有的网络请求函数,我们也建议您将封装的请求函数放置于此目录下。
2、封装的 createAxios 无法满足您的使用场景时,当然是可以直接使用 axios.create 的,BuildAdmin 对 Axios 的封装只是为了方便使用。
Axios 封装代码位于:/src/utils/axios.ts,通常您参考如下方式创建请求即可:
ts
createAxios(axiosConfig: AxiosRequestConfig, options: Options = {}, loading: LoadingOptions = {}): ApiPromise | AxiosPromise基本使用示例
ts
import createAxios from '/@/utils/axios'
export function getMenuRules() {
return createAxios({
url: '/index.php/admin/auth.menu/index',
method: 'get',
})
}
// 然后就可以
getMenuRules().then((res) => {
console.log(res)
})参数解释
参数一:axiosConfig
axiosConfig 参数用于配置:Axios 创建请求时自带的可用配置选项,可用配置项 请参考Axios网站,只有 url 是必需的,默认请求方法为 get。
ts
createAxios({
url: '/index.php/admin/auth.menu/index',
method: 'get',
timeout: 3000, // 请求超时毫秒数,可覆盖默认的超时设定
// ...
})参数二:options
options 参数可以传递以下可用选项:
| 选项名 | 默认值 | 注释 |
|---|---|---|
| CancelDuplicateRequest | true | 是否开启取消重复请求(连续的重复请求会被自动取消) |
| loading | false | 是否开启 loading 层效果 |
| reductDataFormat | true | 是否开启简洁的数据结构响应(开启返回 ApiPromise,关闭返回 AxiosPromise) |
| showErrorMessage | true | 是否开启接口错误信息直接提示,如 接口404 |
| showCodeMessage | true | 是否开启 code!=0 时的信息直接提示(比如操作失败直接弹窗提示接口返回的消息,就不需要再写代码弹窗提示了) |
| showSuccessMessage | false | 是否开启 code=0 时的信息直接提示 |
ts
// 此处,我们为请求方法确定了返回类型,以此得到更好的类型支持,本操作是可选的
export function postData(data: anyObj): ApiPromise<TableDefaultData> {
return createAxios(
{
url: actionUrl.get('edit'),
method: 'post',
data: data,
},
{
showSuccessMessage: true,
}
) as ApiPromise
}参数三:loading
我们封装了 element 的 loading ,此参数用于设置 loading 的配置,所有可用配置项,请参考 官方文档。
ts
// 示例一
export function postData(data: anyObj) {
return createAxios(
{
url: actionUrl.get('edit'),
method: 'post',
data: data,
},
{},
{
text: '正在全力提交中...',
}
)
}
// 示例二
export function getMenuRules() {
return createAxios(
{
url: '/index.php/admin/auth.menu/index',
method: 'get',
},
{},
{
text: '正在全力加载中...',
}
)
}