Swagger ir preskriptīva un pilnīga sistēma RESTful stila tīmekļa pakalpojumu veidošanai, aprakstīšanai, zvanīšanai un vizualizācijai.
Vispārējais mērķis ir klienta un failu sistēmas atjaunināšanai ar tādu pašu ātrumu kā serveris. Faila metodes, parametri un modeļi ir cieši integrēti servera puses kodā, ļaujot API vienmēr būt sinhronizētiem. Swagger nekad nav atvieglojis jaudīgu API izvietošanu un izmantošanu.
Pārskats
Vispirms izveidojiet jaunu projektu ASP.NET Core 3.1 un izmantojiet nuget, lai instalētu Swashbuckle.AspNetCore pakotni ar šādu komandu:
Konfigurējiet Swagger pakalpojumu startup.cs failā šādi:
ConfigureServices metode
Konfigurēšanas metode
Izveidojiet jaunu testa kontrolleri ar šādu kodu:
Testa kontroliera izveides interfeiss Produkta parametru modeļa objekts ir šāds:
Pēc projekta uzsākšanas piekļūstiet:http://localhost:18979/swagger/index.html, kā parādīts attēlā:
swagger.json Saturs ir šāds:
{ "openapi": "3.0.1", "informācija": { "title": "Mana API", "versija": "v1" }, "ceļi": { "/api/Test/Create": { "post": { "tags": [ "Pārbaude" ], "requestBody": { "saturs": { "application/json": { "shēma": { "$ref": "#/komponenti/shēmas/produkts" } }, "text/json": { "shēma": { "$ref": "#/komponenti/shēmas/produkts" } }, "application/*+json": { "shēma": { "$ref": "#/komponenti/shēmas/produkts" } } } }, "atbildes": { "200": { "description": "Panākumi", "saturs": { "teksts/vienkāršs": { "shēma": { "type": "virkne" } }, "application/json": { "shēma": { "type": "virkne" } }, "text/json": { "shēma": { "type": "virkne" } } } } } } } }, "komponenti": { "shēmas": { "Informācija": { "tips": "objekts", "rekvizīti": { "isDiscount": { "type": "Būla valoda" }, "isVip": { "tips": "Būls", "nullable": true } }, "additionalProperties": false }, "Produkts": { "tips": "objekts", "rekvizīti": { "nosaukums": { "tips": "virkne", "nullable": true }, "atspējots": { "type": "Būla valoda" }, "informācija": { "$ref": "#/komponenti/shēmas/informācija" } }, "additionalProperties": false } } }
}
Mēs konstatējām, ka gan Būla tipi, gan nullējamie Būla tipi pēc noklusējuma ir: true,Ikdienas izstrādē, ja bool nav piešķirts, noklusējumam jābūt false, un null tipam jābūt null, mēs cenšamies izmantot swagger, lai simulētu apņemšanos, ja parametri netiek pamanīti,Nelaimes gadījumi ir pakļauti。 (Pagājušajā nedēļā es izmantoju swagger, lai simulētu, ka bool parametrs pēc noklusējuma ir patiess, izraisot WeChat ziņojumus visiem cilvēkiem.)
Kā pēc noklusējuma piešķirt Būla tipu false? Kā būtu ar nulles tipiem, kas tiek piešķirti null?
Izveidojiet jaunu klasi, kas pārmanto no ISchemaFilter, un kods ir šāds:
Un, pievienojot swagger pakalpojumu, pievienojiet filtru AddSwaggerGen šādi:
Dažiem īpašiem BOOL laukiem noklusējuma vērtība ir jāiestata uz true, un to var pievienot[DefaultValue(true)]Raksturlielumi ir šādi:
{ "name": "virkne", "invalīds": taisnība, "informācija": { "isDiscount": nepatiess, "isVip": null }
} swagger.json Fails ir šāds:
{ "openapi": "3.0.1", "informācija": { "title": "Mana API", "versija": "v1" }, "ceļi": { "/api/Test/Create": { "post": { "tags": [ "Pārbaude" ], "requestBody": { "saturs": { "application/json": { "shēma": { "$ref": "#/komponenti/shēmas/produkts" } }, "text/json": { "shēma": { "$ref": "#/komponenti/shēmas/produkts" } }, "application/*+json": { "shēma": { "$ref": "#/komponenti/shēmas/produkts" } } } }, "atbildes": { "200": { "description": "Panākumi", "saturs": { "teksts/vienkāršs": { "shēma": { "type": "virkne" } }, "application/json": { "shēma": { "type": "virkne" } }, "text/json": { "shēma": { "type": "virkne" } } } } } } } }, "komponenti": { "shēmas": { "Informācija": { "tips": "objekts", "rekvizīti": { "isDiscount": { "tips": "Būls", "noklusējums": nepatiess }, "isVip": { "tips": "Būls", "noklusējums": nulle, "nullable": true } }, "additionalProperties": false }, "Produkts": { "tips": "objekts", "rekvizīti": { "nosaukums": { "tips": "virkne", "nullable": true }, "atspējots": { "tips": "Būls", "noklusējums": patiess }, "informācija": { "$ref": "#/komponenti/shēmas/informācija" } }, "additionalProperties": false } } }
} (Beigas)
|