Búsqueda de sitios web

javascript - Angular Typescript: Generador Swagger CodeGen haciendo que todas las propiedades de la clase sean anulables


Estamos generando proxies automáticamente con SwaggerCodeGen https://swagger.io/.

Esto reducirá la escritura manual de cientos de clases. Notamos que todas las propiedades de la clase del modelo son Nullable ? en SwaggerCodeGen.

Cuando escribieron esto, ¿no rompe el contrato de la interfaz cuando algunos miembros son obligatorios? ¿Cuál es la razón por la que SwaggerCodeGen hizo esto? En nuestra misma clase correspondiente en C#, no son anulables.

export interface Product{ 
    productId?: number;
    productName?: string;
    productType?: number;
    manufacturer?: string;
    inventory?: number;

Actualmente convirtiendo clases C# a Angular Typescript 10.

Otro tema:

De manera similar en NSwag Studio,

Están haciendo esto con tipos de unión undefined, en lugar de nulos. ¿Es lo mismo que Swagger CodeGen?

export interface Product {
    productId: number | undefined;
    productName?: string | undefined;
    productType?: number | undefined;
    manufacturer?: string | undefined;
    inventory?: number | undefined;

Respuesta #1

Swagger tiene una propiedad "required" para los parámetros. Si esto no se establece en true, el generador de código hará que los parámetros correspondientes sean anulables.

La solución alternativa es personalizar el generador (por ejemplo, mapeo de tipos) y la plantilla mustache (por ejemplo, eliminar la verificación del parámetro obligatorio si es un tipo primitivo)

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

Artículos relacionados