API Client 请求库
在 2.17.0 版本中,Halo 提供了新的 @halo-dev/api-client
JS 库,用于简化在 Halo 内部、插件的 UI 中、外部应用程序中请求 Halo 接口的逻辑。
此文档将介绍如何通过 @halo-dev/api-client
发起 API 请求。
安装
pnpm install @halo-dev/api-client axios
提示
推荐在项目中引入 TypeScript,可以获得更好的类型提示。
模块介绍
在 @halo-dev/api-client
包中导出了以下模块:
import {
coreApiClient,
consoleApiClient,
ucApiClient,
publicApiClient,
createCoreApiClient,
createConsoleApiClient,
createUcApiClient,
createPublicApiClient,
axiosInstance
} from "@halo-dev/api-client"
- coreApiClient: 为 Halo 所有自定义模型的 CRUD 接口封装的 API Client。
- consoleApiClient: 为 Halo 针对 Console 提供的接口封装的 API Client。
- ucApiClient: 为 Halo 针对 UC 提供的接口封装的 API Client。
- publicApiClient: 为 Halo 所有公开访问的接口封装的 API Client。
- createCoreApiClient: 用于创建自定义模型的 CRUD 接口封装的 API Client,需要传入 axios 实例。
- createConsoleApiClient: 用于创建 Console 接口封装的 API Client,需要传入 axios 实例。
- createUcApiClient: 用于创建 UC 接口封装的 API Client,需要传入 axios 实例。
- createPublicApiClient: 用于创建公开访问接口封装的 API Client,需要传入 axios 实例。
- axiosInstance: 内部默认创建的 axios 实例。
使用
在 Halo 插件中使用
在 Halo 内部使用
如果需要在 Halo 核心模块中使用 @halo-dev/api-client
,可以直接使用 coreApiClient
、consoleApiClient
、ucApiClient
、publicApiClient
,无需单独处理异常逻辑和认证逻辑。
示例
import { coreApiClient } from "@halo-dev/api-client"
coreApiClient.content.post.listPost().then(response => {
// handle response
})
在外部程序中使用
在外部程序中使用时,需要自行创建 axios 实例,并使用 createCoreApiClient
、createConsoleApiClient
、createUcApiClient
、createPublicApiClient
创建 API Client,这样可以方便处理异常逻辑和认证逻辑。
import axios from "axios"
const axiosInstance = axios.create({
baseURL: "http://localhost:8090",
headers: {
// 使用个人令牌进行认证
Authorization: 'Bearer pat_1234567890abcdef',
}
})
// 添加请求拦截器
axiosInstance.interceptors.request.use(
(config) => {
return config;
},
(error) => {
return Promise.reject(error);
}
);
// 添加响应拦截器
axiosInstance.interceptors.response.use(
(response) => {
return response;
},
async (error: AxiosError) => {
// handle error
}
);
const coreApiClient = createCoreApiClient(axiosInstance)
coreApiClient.content.post.listPost().then(response => {
// handle response
})
提示
认证方式的说明请 参考:认证方式