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 提交错误报告。
我一直在使用 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 提交错误报告。