# @halo-dev/api-client

Halo 2.0 的 JavaScript API 客户端请求库。使用 [OpenAPI Generator](https://openapi-generator.tech/) 生成。

## 使用

```javascript
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 实例。

### 在插件中使用

```shell
pnpm install @halo-dev/api-client axios
```

由于已经在 Console 和 UC 项目中引入并设置好了 Axios 拦截器，所以直接使用即可：

```javascript
import { coreApiClient } from "@halo-dev/api-client";

coreApiClient.content.post.listPost().then((response) => {
  // handle response
});
```

此外，在最新的 `@halo-dev/ui-plugin-bundler-kit@2.17.0` 中，已经排除了 `@halo-dev/api-client`、`axios` 依赖，所以最终产物中的相关依赖会自动使用 Halo 本身提供的依赖，无需关心最终产物大小。

详细文档可查阅：[插件开发 / API 请求](https://docs.halo.run/developer-guide/plugin/api-reference/ui/api-request)

### 在外部项目中使用

```shell
pnpm install @halo-dev/api-client axios
```

```javascript
import axios from "axios";

const axiosInstance = axios.create({
  baseURL: "http://localhost:8090",
});

const coreApiClient = createCoreApiClient(axiosInstance);

coreApiClient.content.post.listPost().then((response) => {
  // handle response
});
```
