SDK 方法名称
SDK 方法名称
默认情况下,Fern 基于您的 OpenRPC 方法名称生成 SDK 方法名称。您可以使用 x-fern-sdk-method-name 扩展来覆盖此行为。
自定义方法名称
使用 x-fern-sdk-method-name 为您的 JSON-RPC 方法指定自定义方法名称:
openrpc.yml
1 methods: 2 - name: user.getById 3 summary: Get user by ID 4 x-fern-sdk-method-name: getUser 5 params: 6 - name: id 7 schema: 8 type: string 9 required: true 10 result: 11 name: user 12 schema: 13 $ref: '#/components/schemas/User' 14 - name: order.createNew 15 summary: Create a new order 16 x-fern-sdk-method-name: create 17 params: 18 - name: orderData 19 schema: 20 $ref: '#/components/schemas/CreateOrderRequest' 21 required: true 22 result: 23 name: order 24 schema: 25 $ref: '#/components/schemas/Order'
这将生成如下的 SDK 方法:
1 // 代替 client.user.getById() 2 const user = await client.user.getUser({ id: "user_123" }); 3 4 // 代替 client.order.createNew() 5 const order = await client.order.create({ orderData: {...} });
方法命名约定
在命名 SDK 方法时遵循这些约定:
CRUD 操作
使用标准的 CRUD 命名:
openrpc.yml
1 methods: 2 - name: user.createUser 3 summary: Create a new user 4 x-fern-sdk-method-name: create 5 # 生成: client.user.create() 6 7 - name: user.getUserById 8 summary: Get user by ID 9 x-fern-sdk-method-name: get 10 # 生成: client.user.get() 11 12 - name: user.updateUser 13 summary: Update user information 14 x-fern-sdk-method-name: update 15 # 生成: client.user.update() 16 17 - name: user.deleteUser 18 summary: Delete a user 19 x-fern-sdk-method-name: delete 20 # 生成: client.user.delete()
列表操作
为列表操作使用描述性名称:
openrpc.yml
1 methods: 2 - name: user.getAllUsers 3 summary: Get all users 4 x-fern-sdk-method-name: list 5 # 生成: client.user.list() 6 7 - name: user.searchUsers 8 summary: Search for users 9 x-fern-sdk-method-name: search 10 # 生成: client.user.search() 11 12 - name: order.getUserOrders 13 summary: Get orders for a user 14 x-fern-sdk-method-name: listByUser 15 # 生成: client.order.listByUser()
动作操作
使用面向动作的名称:
openrpc.yml
1 methods: 2 - name: email.sendNotification 3 summary: Send email notification 4 x-fern-sdk-method-name: send 5 # 生成: client.email.send() 6 7 - name: payment.processPayment 8 summary: Process a payment 9 x-fern-sdk-method-name: process 10 # 生成: client.payment.process() 11 12 - name: cache.invalidateCache 13 summary: Invalidate cache entries 14 x-fern-sdk-method-name: invalidate 15 # 生成: client.cache.invalidate()
特定语言的方法名称
您可以为不同的编程语言指定不同的方法名称:
openrpc.yml
1 methods: 2 - name: user.getUserPreferences 3 summary: Get user preferences 4 x-fern-sdk-method-name: 5 python: get_preferences 6 typescript: getPreferences 7 go: GetPreferences 8 java: getPreferences 9 csharp: GetPreferences 10 params: 11 - name: userId 12 schema: 13 type: string 14 required: true 15 result: 16 name: preferences 17 schema: 18 $ref: '#/components/schemas/UserPreferences'
命名空间方法名称
对于带有命名空间前缀的方法,自定义最终的方法名称:
openrpc.yml
1 methods: 2 - name: analytics.track.pageView 3 summary: Track page view event 4 x-fern-sdk-method-name: trackPageView 5 params: 6 - name: eventData 7 schema: 8 $ref: '#/components/schemas/PageViewEvent' 9 required: true 10 - name: analytics.track.conversion 11 summary: Track conversion event 12 x-fern-sdk-method-name: trackConversion 13 params: 14 - name: eventData 15 schema: 16 $ref: '#/components/schemas/ConversionEvent' 17 required: true
生成:
1 await client.analytics.trackPageView({ eventData: {...} }); 2 await client.analytics.trackConversion({ eventData: {...} });
通知方法名称
对于通知方法(单向调用),使用适当的命名:
openrpc.yml
1 methods: 2 - name: log.recordError 3 summary: Record an error event 4 x-fern-sdk-method-name: logError 5 params: 6 - name: errorData 7 schema: 8 $ref: '#/components/schemas/ErrorData' 9 required: true 10 # 无结果 - 这是一个通知 11 - name: metrics.incrementCounter 12 summary: Increment a metric counter 13 x-fern-sdk-method-name: increment 14 params: 15 - name: metric 16 schema: 17 type: string 18 required: true 19 - name: value 20 schema: 21 type: number 22 default: 1 23 # 无结果 - 这是一个通知
异步方法命名
对于返回 promise 或 future 的方法,考虑异步命名:
openrpc.yml
1 methods: 2 - name: report.generateReport 3 summary: Generate a report (long-running) 4 x-fern-sdk-method-name: generateAsync 5 params: 6 - name: reportConfig 7 schema: 8 $ref: '#/components/schemas/ReportConfig' 9 required: true 10 result: 11 name: jobId 12 schema: 13 type: string 14 description: Job ID for tracking report generation
这确保方法名称遵循每个目标语言的约定,同时为开发者维护清晰直观的 API。