跳到导航

SDK 方法名称

以 Markdown 格式查看

默认情况下,Fern 基于您的 OpenRPC 方法名称生成 SDK 方法名称。您可以使用 x-fern-sdk-method-name 扩展来覆盖此行为。

自定义方法名称

使用 x-fern-sdk-method-name 为您的 JSON-RPC 方法指定自定义方法名称:

openrpc.yml
methods:
- name: user.getById
summary: Get user by ID
x-fern-sdk-method-name: getUser
params:
- name: id
schema:
type: string
required: true
result:
name: user
schema:
$ref: '#/components/schemas/User'
- name: order.createNew
summary: Create a new order
x-fern-sdk-method-name: create
params:
- name: orderData
schema:
$ref: '#/components/schemas/CreateOrderRequest'
required: true
result:
name: order
schema:
$ref: '#/components/schemas/Order'

这将生成如下的 SDK 方法:

// 代替 client.user.getById()
const user = await client.user.getUser({ id: "user_123" });
// 代替 client.order.createNew()
const order = await client.order.create({ orderData: {...} });

方法命名约定

在命名 SDK 方法时遵循这些约定:

CRUD 操作

使用标准的 CRUD 命名:

openrpc.yml
methods:
- name: user.createUser
summary: Create a new user
x-fern-sdk-method-name: create
# 生成: client.user.create()
- name: user.getUserById
summary: Get user by ID
x-fern-sdk-method-name: get
# 生成: client.user.get()
- name: user.updateUser
summary: Update user information
x-fern-sdk-method-name: update
# 生成: client.user.update()
- name: user.deleteUser
summary: Delete a user
x-fern-sdk-method-name: delete
# 生成: client.user.delete()

列表操作

为列表操作使用描述性名称:

openrpc.yml
methods:
- name: user.getAllUsers
summary: Get all users
x-fern-sdk-method-name: list
# 生成: client.user.list()
- name: user.searchUsers
summary: Search for users
x-fern-sdk-method-name: search
# 生成: client.user.search()
- name: order.getUserOrders
summary: Get orders for a user
x-fern-sdk-method-name: listByUser
# 生成: client.order.listByUser()

动作操作

使用面向动作的名称:

openrpc.yml
methods:
- name: email.sendNotification
summary: Send email notification
x-fern-sdk-method-name: send
# 生成: client.email.send()
- name: payment.processPayment
summary: Process a payment
x-fern-sdk-method-name: process
# 生成: client.payment.process()
- name: cache.invalidateCache
summary: Invalidate cache entries
x-fern-sdk-method-name: invalidate
# 生成: client.cache.invalidate()

特定语言的方法名称

您可以为不同的编程语言指定不同的方法名称:

openrpc.yml
methods:
- name: user.getUserPreferences
summary: Get user preferences
x-fern-sdk-method-name:
python: get_preferences
typescript: getPreferences
go: GetPreferences
java: getPreferences
csharp: GetPreferences
params:
- name: userId
schema:
type: string
required: true
result:
name: preferences
schema:
$ref: '#/components/schemas/UserPreferences'

命名空间方法名称

对于带有命名空间前缀的方法,自定义最终的方法名称:

openrpc.yml
methods:
- name: analytics.track.pageView
summary: Track page view event
x-fern-sdk-method-name: trackPageView
params:
- name: eventData
schema:
$ref: '#/components/schemas/PageViewEvent'
required: true
- name: analytics.track.conversion
summary: Track conversion event
x-fern-sdk-method-name: trackConversion
params:
- name: eventData
schema:
$ref: '#/components/schemas/ConversionEvent'
required: true

生成:

await client.analytics.trackPageView({ eventData: {...} });
await client.analytics.trackConversion({ eventData: {...} });

通知方法名称

对于通知方法(单向调用),使用适当的命名:

openrpc.yml
methods:
- name: log.recordError
summary: Record an error event
x-fern-sdk-method-name: logError
params:
- name: errorData
schema:
$ref: '#/components/schemas/ErrorData'
required: true
# 无结果 - 这是一个通知
- name: metrics.incrementCounter
summary: Increment a metric counter
x-fern-sdk-method-name: increment
params:
- name: metric
schema:
type: string
required: true
- name: value
schema:
type: number
default: 1
# 无结果 - 这是一个通知

异步方法命名

对于返回 promise 或 future 的方法,考虑异步命名:

openrpc.yml
methods:
- name: report.generateReport
summary: Generate a report (long-running)
x-fern-sdk-method-name: generateAsync
params:
- name: reportConfig
schema:
$ref: '#/components/schemas/ReportConfig'
required: true
result:
name: jobId
schema:
type: string
description: Job ID for tracking report generation

这确保方法名称遵循每个目标语言的约定,同时为开发者维护清晰直观的 API。