阅读时间:1 分钟
0 字
数据提供者
数据提供者用于承载 DVHA 的所有数据请求逻辑。
接口定义
ts
interface IDataProvider {
apiUrl?: (path?: string, basePath?: string) => string
getList: (options: IDataProviderListOptions, manage?: IManageHook, auth?: IUserState) => Promise<IDataProviderResponse>
create: (options: IDataProviderCreateOptions, manage?: IManageHook, auth?: IUserState) => Promise<IDataProviderResponse>
update: (options: IDataProviderUpdateOptions, manage?: IManageHook, auth?: IUserState) => Promise<IDataProviderResponse>
deleteOne: (options: IDataProviderDeleteOptions, manage?: IManageHook, auth?: IUserState) => Promise<IDataProviderResponse>
getOne: (options: IDataProviderGetOneOptions, manage?: IManageHook, auth?: IUserState) => Promise<IDataProviderResponse>
getMany: (options: IDataProviderGetManyOptions, manage?: IManageHook, auth?: IUserState) => Promise<IDataProviderResponse>
createMany: (options: IDataProviderCreateManyOptions, manage?: IManageHook, auth?: IUserState) => Promise<IDataProviderResponse>
updateMany: (options: IDataProviderUpdateManyOptions, manage?: IManageHook, auth?: IUserState) => Promise<IDataProviderResponse>
deleteMany: (options: IDataProviderDeleteManyOptions, manage?: IManageHook, auth?: IUserState) => Promise<IDataProviderResponse>
custom: (options: IDataProviderCustomOptions, manage?: IManageHook, auth?: IUserState) => Promise<IDataProviderResponse>
getTotal: (options: IDataProviderResponse) => number
}简单数据提供者
内置 simpleDataProvider(Axios 实现):
ts
import { simpleDataProvider } from '@duxweb/dvha-core'
const dataProvider = simpleDataProvider({
apiUrl: 'https://api.example.com',
})配置方式
dataProvider 支持单个或多数据源:
ts
const config = {
dataProvider: {
default: simpleDataProvider({ apiUrl: 'https://api.example.com' }),
analytics: simpleDataProvider({ apiUrl: 'https://analytics.example.com' }),
},
}管理端也可以覆盖:
ts
const config = {
manages: [
{
name: 'admin',
dataProvider: simpleDataProvider({ apiUrl: 'https://admin.example.com' }),
},
],
}响应与错误
ts
interface IDataProviderResponse {
message?: string
data?: any
meta?: Record<string, any>
raw?: any
headers?: Record<string, any>
status?: number
}
interface IDataProviderError {
status?: number
message?: string
data?: any
meta?: Record<string, any>
raw?: any
}