Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 47519|Respuesta: 4

[ASP.NET] ASP.NET pozo de los parámetros predeterminados de la interfaz Swagger en Core(8).

[Copiar enlace]
Publicado en 8/5/2021 13:27:02 | | | |
Swagger es un marco prescriptivo y completo para construir, describir, llamar y visualizar servicios web de estilo RESTful.

El objetivo general es que el cliente y el sistema de archivos se actualicen a la misma velocidad que el servidor. Los métodos, parámetros y modelos del archivo están estrechamente integrados en el código del lado del servidor, permitiendo que las APIs permanezcan sincronizadas en todo momento. Swagger nunca ha facilitado el despliegue y el uso de APIs potentes.

revisión

ASP.NET Núcleo (7) Análisis en profundidad del código fuente del framework
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET Core (VI) DI obtiene manualmente el método de inyectar objetos
https://www.itsvse.com/thread-9595-1-1.html

ASP.NET Core (cinco) se basa en transacciones distribuidas CAP
https://www.itsvse.com/thread-9593-1-1.html

ASP.NET Validación unificada de modelos de modelo del filtro Core(4)
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Core (iii) Crear dinámicamente instancias usando ActivatorUtilities
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Núcleo (2) Reiniciar la aplicación por código
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) utiliza caché Redis
https://www.itsvse.com/thread-9393-1-1.html

Primero, crea un nuevo proyecto ASP.NET Core 3.1 y usa nuget para instalar el paquete Swashbuckle.AspNetCore con el siguiente comando:

Configura el servicio Swagger en el archivo startup.cs de la siguiente manera:

Método ConfigureServices

Método Configure

Crea un nuevo controlador de Test con el siguiente código:

El objeto modelo de parámetro de parámetro de producto de la interfaz de Creación de Controlador de Pruebas es el siguiente:

Tras iniciar el proyecto, accede a:http://localhost:18979/swagger/index.html, como se muestra en la figura siguiente:



swagger.json El contenido es el siguiente:

{
  "openapi": "3.0.1",
  "info": {
    "título": "Mi API",
    "versión": "v1"
  },
  "caminos": {
    "/api/Test/Create": {
      "publicar": {
        "etiquetas": [
          "Prueba"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/componentes/esquemas/Producto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/componentes/esquemas/Producto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/componentes/esquemas/Producto"
              }
            }
          }
        },
        "respuestas": {
          "200": {
            "descripción": "Éxito",
            "content": {
              "texto/plano": {
                "schema": {
                  "tipo": "cuerda"
                }
              },
              "application/json": {
                "schema": {
                  "tipo": "cuerda"
                }
              },
              "text/json": {
                "schema": {
                  "tipo": "cuerda"
                }
              }
            }
          }
        }
      }
    }
  },
  "componentes": {
    "esquemas": {
      "Información": {
        "tipo": "objeto",
        "propiedades": {
          "isDiscount": {
            "tipo": "booleano"
          },
          "isVip": {
            "tipo": "booleano",
            "nulo": verdadero
          }
        },
        "Propiedades adicionales": falso
      },
      "Producto": {
        "tipo": "objeto",
        "propiedades": {
          "nombre": {
            "tipo": "cuerda",
            "nulo": verdadero
          },
          "discapacitado": {
            "tipo": "booleano"
          },
          "info": {
            "$ref": "#/componentes/esquemas/Información"
          }
        },
        "Propiedades adicionales": falso
      }
    }
  }
}



Descubrimos que tanto los tipos booleanos como los tipos booleanos anulables por defecto en: verdadero,En el desarrollo diario, si no se asigna el bool, el valor predeterminado debe ser falso y el tipo nulo debe ser nulo, intentamos usar el swagger para simular el compromiso, si los parámetros no se detectan,Los accidentes son propensos。 (La semana pasada, utilicé swagger para simular que un parámetro bool era verdadero por defecto, haciendo que los mensajes de WeChat se enviaran a todas las personas.)

¿Cómo asigno por defecto un tipo booleano a false? ¿Y qué tal si se asignan a los tipos null?

Crea una nueva clase que herede de ISchemaFilter, y el código es el siguiente:

Y al añadir el servicio de swagger, añade el filtro AddSwaggerGen de la siguiente manera:

Para algunos campos bool especiales, el valor por defecto debe establecerse como verdadero y puede añadirse[ValorDeDefault(true)]Las características son las siguientes:



{
  "nombre": "cuerda",
  "Discapacitado": Cierto,
  "info": {
    "isDiscount": falso,
    "isVip": null
  }
}
swagger.json El archivo es el siguiente:
{
  "openapi": "3.0.1",
  "info": {
    "título": "Mi API",
    "versión": "v1"
  },
  "caminos": {
    "/api/Test/Create": {
      "publicar": {
        "etiquetas": [
          "Prueba"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/componentes/esquemas/Producto"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/componentes/esquemas/Producto"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/componentes/esquemas/Producto"
              }
            }
          }
        },
        "respuestas": {
          "200": {
            "descripción": "Éxito",
            "content": {
              "texto/plano": {
                "schema": {
                  "tipo": "cuerda"
                }
              },
              "application/json": {
                "schema": {
                  "tipo": "cuerda"
                }
              },
              "text/json": {
                "schema": {
                  "tipo": "cuerda"
                }
              }
            }
          }
        }
      }
    }
  },
  "componentes": {
    "esquemas": {
      "Información": {
        "tipo": "objeto",
        "propiedades": {
          "isDiscount": {
            "tipo": "booleano",
            "default": falso
          },
          "isVip": {
            "tipo": "booleano",
            "default": nulo,
            "nulo": verdadero
          }
        },
        "Propiedades adicionales": falso
      },
      "Producto": {
        "tipo": "objeto",
        "propiedades": {
          "nombre": {
            "tipo": "cuerda",
            "nulo": verdadero
          },
          "discapacitado": {
            "tipo": "booleano",
            "por defecto": verdadero
          },
          "info": {
            "$ref": "#/componentes/esquemas/Información"
          }
        },
        "Propiedades adicionales": falso
      }
    }
  }
}

(Fin)






Anterior:Java utiliza JDBC para conectar la URL de sqlite
Próximo:Kafka ajusta manualmente el desplazamiento
Publicado en 22/9/2021 20:45:47 |
Aprende a aprender...
Publicado en 22/9/2021 20:59:49 |
Aprender a aprender, hierro antiguo, hay tantas actualizaciones que no puedo seguir el ritmo
Publicado en 16/5/2023 11:22:31 |
RE: ASP.NET Core(八) 之 Swagger UI 默认参数的坑 [修改]
Modo avanzado
Publicado en 16/5/2023 17:20:36 |
Aprende a aprender
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com