网站搜索

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

相关文章