【问题标题】:Swagger/OpenAPI client code generator changes propery nameSwagger/OpenAPI 客户端代码生成器更改属性名称
【发布时间】:2020-04-19 19:58:12
【问题描述】:

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

对于 API 定义/文档,我使用的是 OpenAPI,但在为客户端生成代码时遇到了问题。 Bellow 是 yaml 定义(来自 swagger.json)的 sn-p,我用它来生成带有 Swagger Editor 的客户端接口

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

问题在于,在为 typescript 生成客户端代码时,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;
}

【问题讨论】:

    标签: typescript interface swagger openapi


    【解决方案1】:

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

    由于变量命名(snake_case 到 camelCase)的更改,JSON 响应未能正确反序列化到对象中。有没有办法保持原来的命名?

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

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

    所以,请将 modelPropertyNaming 设置为 original

    【讨论】:

    • 感谢@MarkusMeyer 的快速回复,我会试试看。
    • 如果有效,请将答案标记为已接受!这将归功于帮助您的用户。
    • @Markus 你在哪里设置这个选项?它是 openapi-generator CLI 的一部分还是 openapi.yaml 文件中某处的选项?
    • 我也有同样的问题,在哪里设置呢?
    • 使用这个 java -jar openapi-generator-cli-4.1.3.jar generate -i C:\Users\ASUS\Desktop\OpenAPICodegen\swagger.json -g typescript-angular -o C: \Users\ASUS\Desktop\OpenAPICodegen\dist --additional-properties modelPropertyNaming=origional
    猜你喜欢
    • 2022-10-05
    • 1970-01-01
    • 2020-02-17
    • 2020-02-10
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 2023-01-10
    • 1970-01-01
    相关资源
    最近更新 更多