SDK 方法名称
默认情况下,Fern 基于您的 OpenRPC 方法名称生成 SDK 方法名称。您可以使用 x-fern-sdk-method-name 扩展来覆盖此行为。
自定义方法名称
使用 x-fern-sdk-method-name 为您的 JSON-RPC 方法指定自定义方法名称:
openrpc.yml
methods:- name: user.getByIdsummary: Get user by IDx-fern-sdk-method-name: getUserparams:- name: idschema:type: stringrequired: trueresult:name: userschema:$ref: '#/components/schemas/User'- name: order.createNewsummary: Create a new orderx-fern-sdk-method-name: createparams:- name: orderDataschema:$ref: '#/components/schemas/CreateOrderRequest'required: trueresult:name: orderschema:$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.createUsersummary: Create a new userx-fern-sdk-method-name: create# 生成: client.user.create()- name: user.getUserByIdsummary: Get user by IDx-fern-sdk-method-name: get# 生成: client.user.get()- name: user.updateUsersummary: Update user informationx-fern-sdk-method-name: update# 生成: client.user.update()- name: user.deleteUsersummary: Delete a userx-fern-sdk-method-name: delete# 生成: client.user.delete()
列表操作
为列表操作使用描述性名称:
openrpc.yml
methods:- name: user.getAllUserssummary: Get all usersx-fern-sdk-method-name: list# 生成: client.user.list()- name: user.searchUserssummary: Search for usersx-fern-sdk-method-name: search# 生成: client.user.search()- name: order.getUserOrderssummary: Get orders for a userx-fern-sdk-method-name: listByUser# 生成: client.order.listByUser()
动作操作
使用面向动作的名称:
openrpc.yml
methods:- name: email.sendNotificationsummary: Send email notificationx-fern-sdk-method-name: send# 生成: client.email.send()- name: payment.processPaymentsummary: Process a paymentx-fern-sdk-method-name: process# 生成: client.payment.process()- name: cache.invalidateCachesummary: Invalidate cache entriesx-fern-sdk-method-name: invalidate# 生成: client.cache.invalidate()
特定语言的方法名称
您可以为不同的编程语言指定不同的方法名称:
openrpc.yml
methods:- name: user.getUserPreferencessummary: Get user preferencesx-fern-sdk-method-name:python: get_preferencestypescript: getPreferencesgo: GetPreferencesjava: getPreferencescsharp: GetPreferencesparams:- name: userIdschema:type: stringrequired: trueresult:name: preferencesschema:$ref: '#/components/schemas/UserPreferences'
命名空间方法名称
对于带有命名空间前缀的方法,自定义最终的方法名称:
openrpc.yml
methods:- name: analytics.track.pageViewsummary: Track page view eventx-fern-sdk-method-name: trackPageViewparams:- name: eventDataschema:$ref: '#/components/schemas/PageViewEvent'required: true- name: analytics.track.conversionsummary: Track conversion eventx-fern-sdk-method-name: trackConversionparams:- name: eventDataschema:$ref: '#/components/schemas/ConversionEvent'required: true
生成:
await client.analytics.trackPageView({ eventData: {...} });await client.analytics.trackConversion({ eventData: {...} });
通知方法名称
对于通知方法(单向调用),使用适当的命名:
openrpc.yml
methods:- name: log.recordErrorsummary: Record an error eventx-fern-sdk-method-name: logErrorparams:- name: errorDataschema:$ref: '#/components/schemas/ErrorData'required: true# 无结果 - 这是一个通知- name: metrics.incrementCountersummary: Increment a metric counterx-fern-sdk-method-name: incrementparams:- name: metricschema:type: stringrequired: true- name: valueschema:type: numberdefault: 1# 无结果 - 这是一个通知
异步方法命名
对于返回 promise 或 future 的方法,考虑异步命名:
openrpc.yml
methods:- name: report.generateReportsummary: Generate a report (long-running)x-fern-sdk-method-name: generateAsyncparams:- name: reportConfigschema:$ref: '#/components/schemas/ReportConfig'required: trueresult:name: jobIdschema:type: stringdescription: Job ID for tracking report generation
这确保方法名称遵循每个目标语言的约定,同时为开发者维护清晰直观的 API。