Swagger/OpenAPI 客户端代码生成器更改属性名称

Mic*_*ski 3 interface swagger typescript openapi

我正在开发一个带有 .NET Core 后端和 React(TS 支持)前端的小型 Web 应用程序。

对于 API 定义/文档,我使用 OpenAPI,但在为客户端生成代码时遇到问题。下面是 yaml 定义的片段(来自 swagger.json),我用它来使用Swagger 编辑器生成客户端界面

crmObiskiPartnerjevResponse:
      type: object
      properties:
        id:
          type: integer
          format: int32
        PoslovniPartner:
          type: integer
          format: int32
          nullable: true
        DatumObiska:
          type: string
          format: date-time
          nullable: true
        NamenObiskaId:
          type: integer
          format: int32
          nullable: true
        Uporabnik:
          type: integer
          format: int32
          nullable: true
        Opomba:
          type: string
          nullable: true
        NamenObiskaNaziv:
          type: string
          nullable: true
        UporabnikNaziv:
          type: string
          nullable: true
        PoslovniPartnerNaziv:
          type: string
          nullable: true
      nullable: true
Run Code Online (Sandbox Code Playgroud)

问题在于,当为打字稿生成客户端代码时,Swagger 编辑器会弄乱属性的命名。在此示例中,它将第一个字母转换为小型大写字母 (PoslovniPartner -> poslovniPartner)。任何如何解决这个问题的想法将不胜感激。

/**
 * ECE_crmWebAPI
 * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
 *
 * OpenAPI spec version: v1
 * 
 *
 * NOTE: This class is auto generated by the swagger code generator program.
 * https://github.com/swagger-api/swagger-codegen.git
 * Do not edit the class manually.
 */

export interface CrmObiskiPartnerjevResponse { 
    id?: number;
    poslovniPartner?: number;
    datumObiska?: Date;
    namenObiskaId?: number;
    uporabnik?: number;
    opomba?: string;
    namenObiskaNaziv?: string;
    uporabnikNaziv?: string;
    poslovniPartnerNaziv?: string;
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*yer 6

请查看 Codegen 常见问题解答: Codegen - 常见问题解答

由于变量命名更改(snake_case 更改为camelCase),JSON 响应无法正确反序列化到对象中。有什么办法可以保留原来的命名吗?

是的,请在生成 TypeScript 客户端时使用以下选项:

modelPropertyNaming
    Naming convention for the property: 'camelCase', 'PascalCase', 'snake_case' and 'original', which keeps the original name (Default: camelCase)
Run Code Online (Sandbox Code Playgroud)

因此,请将modelPropertyNaming设置为原始值