Swagger je předpisový a kompletní rámec pro vytváření, popisování, volání a vizualizaci webových služeb ve stylu RESTful.
Celkovým cílem je, aby se klient a souborový systém aktualizovali stejnou rychlostí jako server. Metody, parametry a modely souboru jsou úzce integrovány do serverového kódu, což umožňuje API zůstat synchronizovaná po celou dobu. Swagger nikdy neusnadnil nasazení a používání výkonných API.
přezkoumání
Nejprve vytvořte nový projekt ASP.NET Core 3.1 a pomocí nugetu nainstalujte balíček Swashbuckle.AspNetCore pomocí následujícího příkazu:
Nakonfigurujte službu Swagger v souboru startup.cs následovně:
Metoda ConfigureServices
Metoda konfigurace
Vytvořte nový testovací řadič s následujícím kódem:
Rozhraní Testovací řadič Create Objekt modelu parametrů produktu je následující:
Po zahájení projektu přistup:http://localhost:18979/swagger/index.html, jak je znázorněno na obrázku níže:
swagger.json Obsah je následující:
{ "openapi": "3.0.1", "info": { "title": "My API", "verze": "v1" }, "cesty": { "/api/Test/Create": { "post": { "tagy": [ "Test" ], "requestBody": { "content": { "application/json": { "schéma": { "$ref": "#/komponenty/schémata/Produkt" } }, "text/json": { "schéma": { "$ref": "#/komponenty/schémata/Produkt" } }, "application/*+json": { "schéma": { "$ref": "#/komponenty/schémata/Produkt" } } } }, "responses": { "200": { "popis": "Úspěch", "content": { "text/plain": { "schéma": { "type": "string" } }, "application/json": { "schéma": { "type": "string" } }, "text/json": { "schéma": { "type": "string" } } } } } } } }, "components": { "schemas": { "Informace": { "type": "objekt", "vlastnosti": { "isDiscount": { "Type": "Boolean" }, "isVip": { "type": "Boolean", "nullable": pravda } }, "additionalProperties": false }, "Product": { "type": "objekt", "vlastnosti": { "jméno": { "type": "string", "nullable": pravda }, "disabled": { "Type": "Boolean" }, "info": { "$ref": "#/komponenty/schémata/Informace" } }, "additionalProperties": false } } }
}
Zjistili jsme, že jak Booleovské, tak nulovatelné Booleovské typy výchozím způsobem jsou: pravda,Při denním vývoji, pokud bool není přiřazen, výchozí hodnota by měla být nepravdivá a nulový typ by měl být výchozí null, snažíme se použít swagger k simulaci commitu, pokud parametry nejsou zaznamenány,Nehody jsou náchylné。 (Minulý týden jsem použil Swagger k simulaci, že bool parametr je ve výchozím nastavení pravdivý, což způsobilo, že zprávy na WeChatu byly posílány všem lidem.)
Jak přiřadím Booleovský typ jako false ve výchozím nastavení? Co takhle nullové typy jsou přiřazeny jako null?
Vytvořte novou třídu, která dědí z ISchemaFilter, a kód je následující:
A při přidání služby Swagger přidejte filtr AddSwaggerGen následovně:
U některých speciálních bool polí je třeba nastavit výchozí hodnotu na true a lze ji přidat[DefaultValue(true)]Charakteristiky jsou následující:
{ "jméno": "provázek", "Postižený": Pravda, "info": { "isDiscount": nepravdivé, "isVip": null }
} swagger.json Soubor je následující:
{ "openapi": "3.0.1", "info": { "title": "My API", "verze": "v1" }, "cesty": { "/api/Test/Create": { "post": { "tagy": [ "Test" ], "requestBody": { "content": { "application/json": { "schéma": { "$ref": "#/komponenty/schémata/Produkt" } }, "text/json": { "schéma": { "$ref": "#/komponenty/schémata/Produkt" } }, "application/*+json": { "schéma": { "$ref": "#/komponenty/schémata/Produkt" } } } }, "responses": { "200": { "popis": "Úspěch", "content": { "text/plain": { "schéma": { "type": "string" } }, "application/json": { "schéma": { "type": "string" } }, "text/json": { "schéma": { "type": "string" } } } } } } } }, "components": { "schemas": { "Informace": { "type": "objekt", "vlastnosti": { "isDiscount": { "type": "Boolean", "výchozí": nepravda }, "isVip": { "type": "Boolean", "výchozí": null, "nullable": pravda } }, "additionalProperties": false }, "Product": { "type": "objekt", "vlastnosti": { "jméno": { "type": "string", "nullable": pravda }, "disabled": { "type": "Boolean", "výchozí": pravda }, "info": { "$ref": "#/komponenty/schémata/Informace" } }, "additionalProperties": false } } }
} (Konec)
|