Swagger codegen:如何在 swagger codegen 中添加额外的属性

Swagger codgen: How to add additional attributes in swagger codgen

我一直在使用 Swagger Codegen 从后端到前端生成模型 (Spring Boot -> Angular),我不知道如何自动添加额外的属性到生成前端模型。 下面是一个例子,前端模型有附加属性“Mode[]”

例如:

    @Entity
    @NoArgsConstructor
    @Getter
    @Setter
    public class Project {
    
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Column(name = "id_project")
        private Long idProject;
    
        private String name;
    
        @JsonBackReference
        @OneToMany(mappedBy = "project")
        private List<Subproject> subprojects;
        
        @ManyToOne
        @ApiModelProperty(dataType = "long")
        @JoinColumn(name = "client_id_client")
        private Client client;
    
    }*
    export interface Project {
      idProject: number;
      name: string;
      client: Client;
      **modes: Mode[];**
      subprojects: Subproject[];
    }

谢谢!

它不允许也不应该这样做。它是为了让您的 API 更容易消费。如果您需要其他字段,我建议您扩展从 codegen 获得的界面。

 export interface ProjectData extends Project {
   modes: Mode[]:
 }

对于您的应用程序,它甚至会是更严格的类型,因为您将从 API.

获得的内容有不同的类型
http.get<Project>(url).pipe(map(enrichWithModes))
...
enrichWithModes(project: Project): ProjectData {
  // ....
return {...project, modes: []}
}

如果您使用的是 OpenAPI 规范 v3,additionalProperties 默认为 true:

additionalProperties - Value can be boolean or object. Inline or referenced schema MUST be of a Schema Object and not a standard JSON Schema. Consistent with JSON Schema, additionalProperties defaults to true.

参考:https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.3.md#properties

理想情况下,swagger codegen 应该默认支持这一点,以便模型可以存储符合规范的其他属性。如果没有,您可以使用 Swagger Codegen 提交错误报告。