# @arrirpc/codegen-kotlin 中文文档

规范地址：https://npmcn.com/package/%40arrirpc/codegen-kotlin/

版本：0\.85\.0
npm 元数据更新时间：2026-10-03T04:03:57.531Z
中文译文更新时间：2026-11-06T20:22:46.451Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40arrirpc/codegen-kotlin
原文对照：https://npmcn.com/package/%40arrirpc/codegen-kotlin/?lang=original
项目主页：https://github.com/modiimedia/arri#readme
源码仓库：https://github.com/modiimedia/arri

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：147 kB，8 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：1 个
- 首次发布：2024-05-14T04:35:26.382Z
- 最新版本发布：2026-10-03T04:03:57.387Z
- 近 30 天下载量：4553（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：91（近 12 个月 11 个）

## 中文简介



## 安装

```sh
npm install @arrirpc/codegen-kotlin
```

也可以使用：`pnpm add @arrirpc/codegen-kotlin`、`yarn add @arrirpc/codegen-kotlin`、`bun add @arrirpc/codegen-kotlin`

## README

# 阿里·克特林 代码

## 设置

### 1) 将生成器添加到您的 arri 配置

```ts
// arri.config.ts
import { defineConfig, generators } from 'arri';

export default defineConfig({
    generators: [
        generators.kotlinClient({
            clientName: 'MyClient',
            outputFile: './client/src/MyClient.g.kt',
        }),
    ],
});
```

**选项 :**

| 名称 | 说明 |
| --- | --- |
| 输出文件( 需要) | 由生成器创建的文件路径 |
| 客户端Name | 生成客户端类的名称( 默认为“ 客户端 ” ) |
| 类型 前缀 | 在生成的类名中添加前缀 |
| 根服务 | 生成客户端的根服务 |

### (2) 安装依赖关系

生成的代码依赖于下列依赖性:

-   [kotlinx. 序列化](https://github.com/Kotlin/kotlinx.serialization)
-   [ktor 客户端](https://ktor.io/docs/client-dependencies.html)

## 使用生成代码

### 初始化客户端

```kotlin
fun main() {
    // create a Ktor HTTP client
    val httpClient = HttpClient() {
        install(HttpTimeout)
    }
    // initialize your generated client and pass it the httpClient
    // the client name will match whatever options you passed into your arri config
    val client = MyClient(
        httpClient = httpClient,
        baseUrl = "https://example.com",
        // a function that returns a mutable map of headers
        // this function will run before every request. Or before every reconnection in the case of SSE
        headers = {
            mutableMapOf(Pair("x-example-header", "<some-header-value>"))
        }
    )
    runBlocking {
        client.someProcedure()
    }
}
```

Root客户端将是一个包含单一类中所有服务和程序的类. 如果您只需要特定的服务,您可以初始化该服务.

```kotlin
val service = MyClientUsersService(
        httpClient = httpClient,
        baseUrl = "https://example.com",
        headers = {
            mutableMapOf(Pair("x-example-header", "<some-header-value>"))
        }
    )
```

#### 客户端/ 服务选项

| 名称 | 类型 | 说明 |
| --- | --- | --- |
| httpclient 语句 | `HttpClient` | Kttpclient 实例 |
| 基数Url | `String` | API 服务器的基础 URL |
| 页眉 | `(() -> MutableMap<String, String>?)?` | 返回 http headers 地图的函数 |
| 错误( 可选) | `((err: Exception) -> Unit)` | 当客户提出例外时,会起火的钩子 |

### 呼叫程序

#### 标准HTTP程序

```kotlin
runBlocking {
    // procedure with no parameters
    val getUsersResponse = myClient.users.getUsers()

    // procedure with parameters
    val getUserResponse = myClient.users.getUser(GetUserParams(userId = "12345"))
}
```

#### 事件流程序

##### 基本用途

```kotlin
runBlocking {
    myClient.users.watchUserChanges(
        onData { message ->
            println("New message: ${message}")
        },
        onOpen {
            println("Connection established")
        }
        onRequestError { err ->
            println("Error connecting to server: ${err}")
        },
        onResponseError { err ->
            println("Server returned an error: ${err.code} ${err.message}")
        },
        onClose {
            println("Connection closed")
        }
    )
}
```

##### 取消请求

事件流程序可以通过扔出一个 `CancellationException`

```kotlin
runBlocking {
    myClient.users.watchUserChanges(
        onResponseError { err ->
            println("Server returned an error: ${err.code} ${err.message}")
            throw CancellationException()
        }
    )
}
```

您也可以生产工作并取消该工作,以便从外部取消事件流程序

```kotlin
val job = someCoroutineScope.launch {
    myClient.users.watchUserChanges()
}
job.cancel()
```

##### 其他选项

| 选项 | 类型 | 说明 |
| --- | --- | --- |
| 缓冲能力 | 内 | 最大缓冲大小, 用于读取收到的信件 。 默认为1024 \* 1024 (1MB). |
| 最大备份时间 | 长? | Max 等待时间在毫秒内重复 默认为 3000 ms |

### 使用Arri模型

所有生成的模型都将是数据类. 他们将获得以下特征:

**方法**数字 :

-   `toJson(): String`
-   `toUrlQueryParams(): String`

**工厂方法**数字 :

-   `new()`
-   `fromJson(input: String)`
-   `fromJsonElement(input: JsonElement, instancePath: String)`

**其他说明**

-   所有Enums将有一个 `serialValue` 属性.
-   歧视者计划转换为密封类

## 发展

```bash
# build the library
pnpm nx build codegen-kotlin

# test
pnpm nx test codegen-kotlin

# lint
pnpm nx lint codegen-lint
```

## 常见问题

### 如何安装 @arrirpc/codegen-kotlin？

在项目目录运行 npm install @arrirpc/codegen-kotlin，或使用 pnpm add / yarn add / bun add。

### @arrirpc/codegen-kotlin 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @arrirpc/codegen-kotlin 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @arrirpc/codegen-kotlin 可以商用吗？

@arrirpc/codegen-kotlin 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @arrirpc/codegen-kotlin 的下载量有多少？

根据 npm 官方下载统计，@arrirpc/codegen-kotlin 在 2026/10/07 – 2026/11/05 这 30 天内被下载 4,553 次，日均约 152 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @arrirpc/codegen-kotlin 还在维护吗？

最新版本 0\.85\.0 发布于 2026/10/03（1 个月前）；至今共发布 91 个版本，其中过去 12 个月发布了 11 个；首次发布于 2024/05/14。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

