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
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)
|