javascript - Angular Typescript:Swagger CodeGen 生成器将所有类属性设为可为空
我们正在使用 SwaggerCodeGen https://swagger.io/ 自动生成代理。
这将减少手动输入数百个类。我们注意到在 SwaggerCodeGen 中所有模型类属性都是可空的(Nullable ?)。
当他们写这个时,当某些成员是必需的,这不会破坏接口契约吗?SwaggerCodeGen 这样做的原因是什么?在我们对应的 C# 类中,它们是不可为空的。
export interface Product{
productId?: number;
productName?: string;
productType?: number;
manufacturer?: string;
inventory?: number;
目前正在将 C# 类转换为 Angular TypeScript 10。
另一个话题:
同样在 NSwag Studio 中,
他们正在使用未定义的联合类型来做这个,而不是可空类型。这和 Swagger CodeGen 是一样的吗?
export interface Product {
productId: number | undefined;
productName?: string | undefined;
productType?: number | undefined;
manufacturer?: string | undefined;
inventory?: number | undefined;
答案#1
Swagger 对参数有一个“required”属性。如果未将其设置为 true,代码生成器将使相应的参数可为空。
解决方法是自定义生成器(例如类型映射)和 mustache 模板(例如如果是基本类型,则移除对必需参数的检查)
definitions:
Order:
required:
- id
- petId
properties:
id:
required: true
type: integer
format: int64
petId:
type: integer
format: int64
quantity:
required: true
type: integer
format: int32
