Swagger este un cadru prescriptiv și complet pentru construirea, descrierea, apelarea și vizualizarea serviciilor web în stil RESTful.
Scopul general este ca clientul și sistemul de fișiere să se actualizeze la aceeași viteză ca serverul. Metodele, parametrii și modelele fișierului sunt strâns integrate în codul serverului, permițând API-urilor să rămână sincronizate în orice moment. Swagger nu a făcut niciodată mai ușoară implementarea și utilizarea API-urilor puternice.
recenzie
Mai întâi, creează un nou proiect ASP.NET Core 3.1 și folosește nuget pentru a instala pachetul Swashbuckle.AspNetCore cu următoarea comandă:
Configurează serviciul Swagger în fișierul startup.cs după cum urmează:
Metoda ConfigureServices
Metoda Configure
Creează un nou controler de Test cu următorul cod:
Interfața Test Controller Create Product parameter model model este următoarea:
După începerea proiectului, accesați la:http://localhost:18979/swagger/index.html, așa cum se arată în figura de mai jos:
swagger.json Conținutul este următorul:
{ "openapi": "3.0.1", "info": { "titlu": "My API", "Versiune": "V1" }, "căi": { "/api/Test/Create": { "post": { "etichete": [ "Test" ], "requestBody": { "conținut": { "application/json": { "schema": { "$ref": "#/componente/scheme/Produs" } }, "text/json": { "schema": { "$ref": "#/componente/scheme/Produs" } }, "application/*+json": { "schema": { "$ref": "#/componente/scheme/Produs" } } } }, "răspunsuri": { "200": { "descriere": "Succes", "conținut": { "text/simplu": { "schema": { "Tip": "Șnur" } }, "application/json": { "schema": { "Tip": "Șnur" } }, "text/json": { "schema": { "Tip": "Șnur" } } } } } } } }, "componente": { "scheme": { "Informații": { "tip": "obiect", "proprietăți": { "isDiscount": { "tip": "boolean" }, "isVip": { "tip": "boolean", "anulabil": adevărat } }, "Proprietăți suplimentare": false }, "Produs": { "tip": "obiect", "proprietăți": { "name": { "tip": "string", "anulabil": adevărat }, "dezactivat": { "tip": "boolean" }, "info": { "$ref": "#/componente/scheme/Informații" } }, "Proprietăți suplimentare": false } } }
}
Am constatat că atât tipurile booleene, cât și tipurile booleene anulabile sunt implicite: adevărat,În dezvoltarea zilnică, dacă bool-ul nu este atribuit, implicitul ar trebui să fie fals, iar tipul nul, implicit să fie nul., încercăm să folosim swagger-ul pentru a simula angajamentul, dacă parametrii nu sunt observați,Accidentele sunt predispuse。 (Săptămâna trecută, am folosit swagger pentru a simula că un parametru bool era adevărat implicit, ceea ce a făcut ca mesajele WeChat să fie trimise către toți oamenii.)
Cum pot atribui implicit un tip boolean falsului? Ce zici de tipurile null atribuite null?
Creează o nouă clasă care moștenește din ISchemaFilter, iar codul este următorul:
Și când adaugi serviciul swagger, adaugă filtrul AddSwaggerGen după cum urmează:
Pentru unele câmpuri bool speciale, valoarea implicită trebuie setată ca true și poate fi adăugată[DefaultValue(adevărat)]Caracteristicile sunt următoarele:
{ "Nume": "Șnur", "Invalid": Adevărat, "info": { "isDiscount": fals, "isVip": null }
} swagger.json Fișierul este următorul:
{ "openapi": "3.0.1", "info": { "titlu": "My API", "Versiune": "V1" }, "căi": { "/api/Test/Create": { "post": { "etichete": [ "Test" ], "requestBody": { "conținut": { "application/json": { "schema": { "$ref": "#/componente/scheme/Produs" } }, "text/json": { "schema": { "$ref": "#/componente/scheme/Produs" } }, "application/*+json": { "schema": { "$ref": "#/componente/scheme/Produs" } } } }, "răspunsuri": { "200": { "descriere": "Succes", "conținut": { "text/simplu": { "schema": { "Tip": "Șnur" } }, "application/json": { "schema": { "Tip": "Șnur" } }, "text/json": { "schema": { "Tip": "Șnur" } } } } } } } }, "componente": { "scheme": { "Informații": { "tip": "obiect", "proprietăți": { "isDiscount": { "tip": "boolean", "implicit": fals }, "isVip": { "tip": "boolean", "implicit": nul, "anulabil": adevărat } }, "Proprietăți suplimentare": false }, "Produs": { "tip": "obiect", "proprietăți": { "name": { "tip": "string", "anulabil": adevărat }, "dezactivat": { "tip": "boolean", "implicit": adevărat }, "info": { "$ref": "#/componente/scheme/Informații" } }, "Proprietăți suplimentare": false } } }
} (Sfârșit)
|