Swagger on ettekirjutav ja terviklik raamistik RESTful-stiilis veebiteenuste loomiseks, kirjeldamiseks, kutsumiseks ja visualiseerimiseks.
Üldine eesmärk on, et klient ja failisüsteem uuendaksid sama kiirusega kui server. Faili meetodid, parameetrid ja mudelid on tihedalt integreeritud serveripoolsesse koodi, võimaldades API-del kogu aeg sünkroonis püsida. Swagger pole kunagi teinud võimsate API-de juurutamist ja kasutamist lihtsamaks.
Läbivaatamine
Esmalt loo uus projekt Core 3.1 ASP.NET ja kasuta nuget'i, et paigaldada Swashbuckle.AspNetCore pakett järgmise käsuga:
Seadista Swagger teenus startup.cs failis järgmiselt:
ConfigureServices meetod
Seadista meetod
Loo uus testkontroller järgmise koodiga:
Test Controller Create interface Product parameter mudeli objekt on järgmine:
Pärast projekti alustamist pääse ligi:http://localhost:18979/swagger/index.html, nagu alloleval joonisel näidatud:
swagger.json Sisu on järgmine:
{ "openapi": "3.0.1", "info": { "title": "Minu API", "versioon": "v1" }, "teed": { "/api/Test/Create": { "post": { "sildid": [ "Test" ], "requestBody": { "sisu": { "application/json": { "skeem": { "$ref": "#/komponendid/skeemid/Toode" } }, "text/json": { "skeem": { "$ref": "#/komponendid/skeemid/Toode" } }, "application/*+json": { "skeem": { "$ref": "#/komponendid/skeemid/Toode" } } } }, "vastused": { "200": { "kirjeldus": "Edu", "sisu": { "tekst/plain": { "skeem": { "tüüp": "string" } }, "application/json": { "skeem": { "tüüp": "string" } }, "text/json": { "skeem": { "tüüp": "string" } } } } } } } }, "komponendid": { "skeemid": { "Info": { "type": "objekt", "omadused": { "isDiscount": { "type": "boolean" }, "isVip": { "type": "boolean", "nullable": tõene } }, "additionalProperties": vale }, "Toode": { "type": "objekt", "omadused": { "nimi": { "type": "string", "nullable": tõene }, "disabled": { "type": "boolean" }, "info": { "$ref": "#/komponendid/skeemid/Informatsioon" } }, "additionalProperties": vale } } }
}
Leidsime, et nii Boole'i tüübid kui ka nullitavad Boole'i tüübid on vaikimisi: tõeline,Igapäevases arenduses, kui bool'i ei määrata, peaks vaikimisi olema false ja null tüüp vaikimisi null, püüame simuleerida commit'i Swagger'iga, kui parameetreid ei märgata,Õnnetused on altid。 (Eelmisel nädalal kasutasin swaggerit, et simuleerida, et bool-parameeter on vaikimisi tõene, mistõttu WeChati sõnumid saadetakse kõigile inimestele.)
Kuidas ma määran vaikimisi Boole'i tüübi vale tüübile? Kuidas oleks nulltüüpide määramisega?
Loo uus klass, mis pärib ISchemaFilterilt, ja kood on järgmine:
Ja kui lisad Swagger-teenuse, lisa filter AddSwaggerGen järgmiselt:
Mõnede eriliste bool-väljade puhul tuleb vaikimisi väärtus seada tõeseks ja seda saab lisada[DefaultValue(true)]Omadused on järgmised:
{ "nimi": "string", "disabled": tõsi, "info": { "isDiscount": väär, "isVip": null }
} swagger.json Fail on järgmine:
{ "openapi": "3.0.1", "info": { "title": "Minu API", "versioon": "v1" }, "teed": { "/api/Test/Create": { "post": { "sildid": [ "Test" ], "requestBody": { "sisu": { "application/json": { "skeem": { "$ref": "#/komponendid/skeemid/Toode" } }, "text/json": { "skeem": { "$ref": "#/komponendid/skeemid/Toode" } }, "application/*+json": { "skeem": { "$ref": "#/komponendid/skeemid/Toode" } } } }, "vastused": { "200": { "kirjeldus": "Edu", "sisu": { "tekst/plain": { "skeem": { "tüüp": "string" } }, "application/json": { "skeem": { "tüüp": "string" } }, "text/json": { "skeem": { "tüüp": "string" } } } } } } } }, "komponendid": { "skeemid": { "Info": { "type": "objekt", "omadused": { "isDiscount": { "type": "boolean", "vaikimisi": vale }, "isVip": { "type": "boolean", "vaikimisi": null, "nullable": tõene } }, "additionalProperties": vale }, "Toode": { "type": "objekt", "omadused": { "nimi": { "type": "string", "nullable": tõene }, "disabled": { "type": "boolean", "vaikimisi": tõene }, "info": { "$ref": "#/komponendid/skeemid/Informatsioon" } }, "additionalProperties": vale } } }
} (Lõpp)
|