mirror of
https://github.com/halo-dev/docs.git
synced 2025-10-21 10:17:34 +00:00
docs: update documentation for Halo 2.20 (#429)
为 [Halo 2.20](https://github.com/halo-dev/halo/releases/tag/v2.20.0) 更新文档。 /kind documentation ```release-note None ```
This commit is contained in:
@@ -0,0 +1,112 @@
|
||||
---
|
||||
title: API Client 请求库
|
||||
description: 介绍使用 API Client 请求库发起 API 请求的方式
|
||||
---
|
||||
|
||||
在 2.17.0 版本中,Halo 提供了新的 `@halo-dev/api-client` JS 库,用于简化在 Halo 内部、插件的 UI 中、外部应用程序中请求 Halo 接口的逻辑。
|
||||
|
||||
此文档将介绍如何通过 `@halo-dev/api-client` 发起 API 请求。
|
||||
|
||||
## 安装
|
||||
|
||||
```shell
|
||||
pnpm install @halo-dev/api-client axios
|
||||
```
|
||||
|
||||
:::info 提示
|
||||
推荐在项目中引入 TypeScript,可以获得更好的类型提示。
|
||||
:::
|
||||
|
||||
## 模块介绍
|
||||
|
||||
在 `@halo-dev/api-client` 包中导出了以下模块:
|
||||
|
||||
```ts
|
||||
import {
|
||||
coreApiClient,
|
||||
consoleApiClient,
|
||||
ucApiClient,
|
||||
publicApiClient,
|
||||
createCoreApiClient,
|
||||
createConsoleApiClient,
|
||||
createUcApiClient,
|
||||
createPublicApiClient,
|
||||
axiosInstance
|
||||
} from "@halo-dev/api-client"
|
||||
```
|
||||
|
||||
- **coreApiClient**: 为 Halo 所有[自定义模型](https://github.com/halo-dev/rfcs/tree/main/extension)的 CRUD 接口封装的 API Client。
|
||||
- **consoleApiClient**: 为 Halo 针对 Console 提供的接口封装的 API Client。
|
||||
- **ucApiClient**: 为 Halo 针对 UC 提供的接口封装的 API Client。
|
||||
- **publicApiClient**: 为 Halo 所有公开访问的接口封装的 API Client。
|
||||
- **createCoreApiClient**: 用于创建[自定义模型](https://github.com/halo-dev/rfcs/tree/main/extension)的 CRUD 接口封装的 API Client,需要传入 axios 实例。
|
||||
- **createConsoleApiClient**: 用于创建 Console 接口封装的 API Client,需要传入 axios 实例。
|
||||
- **createUcApiClient**: 用于创建 UC 接口封装的 API Client,需要传入 axios 实例。
|
||||
- **createPublicApiClient**: 用于创建公开访问接口封装的 API Client,需要传入 axios 实例。
|
||||
- **axiosInstance**: 内部默认创建的 axios 实例。
|
||||
|
||||
## 使用
|
||||
|
||||
### 在 Halo 插件中使用
|
||||
|
||||
参考:[插件开发 / API 请求](../plugin/api-reference/ui/api-request.md#使用)
|
||||
|
||||
### 在 Halo 内部使用
|
||||
|
||||
如果需要在 Halo 核心模块中使用 `@halo-dev/api-client`,可以直接使用 `coreApiClient`、`consoleApiClient`、`ucApiClient`、`publicApiClient`,无需单独处理异常逻辑和认证逻辑。
|
||||
|
||||
示例
|
||||
|
||||
```ts
|
||||
import { coreApiClient } from "@halo-dev/api-client"
|
||||
|
||||
coreApiClient.content.post.listPost().then(response => {
|
||||
// handle response
|
||||
})
|
||||
```
|
||||
|
||||
### 在外部程序中使用
|
||||
|
||||
在外部程序中使用时,需要自行创建 axios 实例,并使用 `createCoreApiClient`、`createConsoleApiClient`、`createUcApiClient`、`createPublicApiClient` 创建 API Client,这样可以方便处理异常逻辑和认证逻辑。
|
||||
|
||||
```javascript
|
||||
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
|
||||
})
|
||||
```
|
||||
|
||||
:::info 提示
|
||||
认证方式的说明请参考:[认证方式](./introduction.md#认证方式)
|
||||
:::
|
Reference in New Issue
Block a user