Swagger è un framework prescrittivo e completo per costruire, descrivere, chiamare e visualizzare servizi web in stile RESTful.
L'obiettivo generale è che il client e il file system si aggiornino alla stessa velocità del server. I metodi, i parametri e i modelli del file sono strettamente integrati nel codice lato server, permettendo alle API di rimanere sincronizzate in ogni momento. Swagger non ha mai reso più facile implementare e utilizzare API potenti.
recensione
Per prima cosa, crea un nuovo progetto ASP.NET Core 3.1 e usa nuget per installare il pacchetto Swashbuckle.AspNetCore con il seguente comando:
Configura il servizio Swagger nel file startup.cs come segue:
Metodo ConfigureServices
Metodo Configure
Crea un nuovo controller di Test con il seguente codice:
L'oggetto modello di parametro prodotto per creare interfaccia di Test Controller è il seguente:
Dopo aver avviato il progetto, accedi a:http://localhost:18979/swagger/index.html, come mostrato nella figura sottostante:
swagger.json Il contenuto è il seguente:
{ "openapi": "3.0.1", "info": { "titolo": "La mia API", "versione": "v1" }, "sentieri": { "/api/Test/Create": { "post": { "tag": [ "Test" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/componenti/schemi/Prodotto" } }, "testo/json": { "schema": { "$ref": "#/componenti/schemi/Prodotto" } }, "application/*+json": { "schema": { "$ref": "#/componenti/schemi/Prodotto" } } } }, "risposte": { "200": { "descrizione": "Successo", "content": { "testo/semplice": { "schema": { "tipo": "string" } }, "application/json": { "schema": { "tipo": "string" } }, "testo/json": { "schema": { "tipo": "string" } } } } } } } }, "componenti": { "schema": { "Informazioni": { "tipo": "oggetto", "proprietà": { "isDiscount": { "tipo": "booleano" }, "isVip": { "tipo": "booleano", "nullabile": vero } }, "Proprietà aggiuntive": false }, "Prodotto": { "tipo": "oggetto", "proprietà": { "name": { "tipo": "string", "nullabile": vero }, "disabilitato": { "tipo": "booleano" }, "info": { "$ref": "#/componenti/schemi/Informazioni" } }, "Proprietà aggiuntive": false } } }
}
Abbiamo scoperto che sia i tipi booleani che i tipi booleani nullabili di default sono: true,Nello sviluppo quotidiano, se il bool non viene assegnato, il default dovrebbe essere falso e il tipo null dovrebbe essere predefinito null, cerchiamo di usare lo swagger per simulare il commit, se i parametri non vengono notati,Gli incidenti sono soggetti。 (La settimana scorsa ho usato swagger per simulare che un parametro bool era vero di default, causando che i messaggi di WeChat venissero inviati a tutti.)
Come posso assegnare di default un tipo booleano a falso? Che ne dici di essere assegnati ai tipi nulli?
Crea una nuova classe che eredita da ISchemaFilter, e il codice è il seguente:
E quando aggiungi il servizio swagger, aggiungi il filtro AddSwaggerGen come segue:
Per alcuni campi bool speciali, il valore predefinito deve essere impostato su true e può essere aggiunto[DefaultValue(vero)]Le caratteristiche sono le seguenti:
{ "nome": "corda", "Disabile": vero, "info": { "isDiscount": falso, "isVip": null }
} swagger.json Il file è il seguente:
{ "openapi": "3.0.1", "info": { "titolo": "La mia API", "versione": "v1" }, "sentieri": { "/api/Test/Create": { "post": { "tag": [ "Test" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/componenti/schemi/Prodotto" } }, "testo/json": { "schema": { "$ref": "#/componenti/schemi/Prodotto" } }, "application/*+json": { "schema": { "$ref": "#/componenti/schemi/Prodotto" } } } }, "risposte": { "200": { "descrizione": "Successo", "content": { "testo/semplice": { "schema": { "tipo": "string" } }, "application/json": { "schema": { "tipo": "string" } }, "testo/json": { "schema": { "tipo": "string" } } } } } } } }, "componenti": { "schema": { "Informazioni": { "tipo": "oggetto", "proprietà": { "isDiscount": { "tipo": "booleano", "default": falso }, "isVip": { "tipo": "booleano", "default": nullo, "nullabile": vero } }, "Proprietà aggiuntive": false }, "Prodotto": { "tipo": "oggetto", "proprietà": { "name": { "tipo": "string", "nullabile": vero }, "disabilitato": { "tipo": "booleano", "default": vero }, "info": { "$ref": "#/componenti/schemi/Informazioni" } }, "Proprietà aggiuntive": false } } }
} (Fine)
|