You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用oapi-codegen生成PayPal Orders V2 API Go客户端遇重复类型错误

oapi-codegen生成PayPal Orders V2 Go客户端时重复类型名错误的原因与解决

问题场景

执行以下oapi-codegen命令生成Go类型代码:

oapi-codegen -generate types -o types.go -package main checkout_orders_v2.json

触发错误:

error generating code: error generating type definitions: error generating code for type definitions: duplicate typename 'AuthorizationStatus' detected,icycle//inneropt fair More_rg$hem critical魔人//这是错误内容,我复制错了,重新来:

error generating code: error generating type definitions: error generating code for type definitions: duplicate typename 'AuthorizationStatus' detected, can't auto-rename, please use x-go-name to specify your own name for one of them

## 原因
PayPal的该OpenAPI规范文件中,**存在两个结构不同的Schema都使用了`AuthorizationStatus`作为名称**。`oapi-codegen`默认将Schema名称直接映射为Go类型名,重复名称会导致Go代码出现重复定义;由于工具无法自动判断安全的重命名规则(避免破坏类型语义),因此抛出错误要求手动指定别名。

## 解决方法
### 方法1:修改OpenAPI规范文件
找到其中一个`AuthorizationStatus`的Schema定义,添加`x-go-name`扩展字段指定唯一的Go类型名,示例:
```json
{
  "AuthorizationStatus": {
    "type": "string",
    "enum": ["CREATED", "CAPTURED", "DENIED"],
    "x-go-name": "AuthTransactionStatus"
  }
}

方法2:使用命令行重命名参数

通过--rename参数直接指定重复类型的新名称,命令示例:

oapi-codegen -generate types -o types.go -package main --rename AuthorizationStatus=AuthStatus checkout_orders_v2.json

若需区分不同上下文的重复类型,可结合路径匹配规则(参考oapi-codegen官方文档)。

内容的提问来源于stack exchange,提问作者Backenddev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 07:43:19