Swagger е предписателна и пълна рамка за изграждане, описание, извикване и визуализиране на уеб услуги в стил RESTful.
Общата цел е клиентът и файловата система да се обновяват със същата скорост като сървъра. Методите, параметрите и моделите на файла са тясно интегрирани в сървърния код, позволявайки на API-тата да останат синхронизирани по всяко време. Swagger никога не е улеснявал внедряването и използването на мощни API-та.
преглед
Първо, създайте нов проект ASP.NET Core 3.1 и използвайте nuget, за да инсталирате пакета Swashbuckle.AspNetCore със следната команда:
Конфигурирайте услугата Swagger във файла startup.cs по следния начин:
Метод ConfigureServices
Метод за конфигуриране
Създайте нов тестов контролер със следния код:
Обектът на модела на параметъра на продукта Test Controller Create интерфейс е следният:
След започване на проекта, достъпете:http://localhost:18979/swagger/index.html, както е показано на фигурата по-долу:
swagger.json Съдържанието е следното:
{ "openAPI": "3.0.1", "info": { "заглавие": "Моят API", "Версия": "V1" }, "пътища": { "/api/Test/Create": { "post": { "тагове": [ "Тест" ], "requestBody": { "съдържание": { "application/json": { "schema": { "$ref": "#/компоненти/схеми/Продукт" } }, "text/json": { "schema": { "$ref": "#/компоненти/схеми/Продукт" } }, "application/*+json": { "schema": { "$ref": "#/компоненти/схеми/Продукт" } } } }, "отговори": { "200": { "описание": "Успех", "съдържание": { "текст/обикновено": { "schema": { "type": "string" } }, "application/json": { "schema": { "type": "string" } }, "text/json": { "schema": { "type": "string" } } } } } } } }, "компоненти": { "schemas": { "Информация": { "тип": "обект", "свойства": { "isDiscount": { "type": "boolean" }, "isVip": { "type": "boolean", "nullable": вярно } }, "допълнителниСвойства": false }, "Продукт": { "тип": "обект", "свойства": { "name": { "type": "string", "nullable": вярно }, "disabled": { "type": "boolean" }, "info": { "$ref": "#/components/schemas/Information" } }, "допълнителниСвойства": false } } }
}
Открихме, че както булеви типове, така и нулеви булеви типове по подразбиране са: true,В ежедневната разработка, ако булът не е присвоен, по подразбиране трябва да е false, а null типът да е по подразбиране null, опитваме се да използваме swagger, за да симулираме комита, ако параметрите не се забелязват,Инцидентите са чести。 (Миналата седмица използвах swagger, за да симулира, че параметърът bool е верен по подразбиране, което доведе до изпращане на съобщения в WeChat до всички.)
Как по подразбиране да присвоя булев тип на false тип? Какво ще кажете за нулеви типове, които да бъдат присвоени null?
Създайте нов клас, който наследява от ISchemaFilter, и кодът е следният:
И при добавяне на услугата swagger, добавете филтъра AddSwaggerGen по следния начин:
За някои специални bool полета по подразбиране стойността трябва да бъде зададена на true и може да се добавя[DefaultValue(true)]Характеристиките са следните:
{ "име": "струна", "disabled": вярно, "info": { "isDiscount": false, "isVip": null }
} swagger.json Файлът е както следва:
{ "openAPI": "3.0.1", "info": { "заглавие": "Моят API", "Версия": "V1" }, "пътища": { "/api/Test/Create": { "post": { "тагове": [ "Тест" ], "requestBody": { "съдържание": { "application/json": { "schema": { "$ref": "#/компоненти/схеми/Продукт" } }, "text/json": { "schema": { "$ref": "#/компоненти/схеми/Продукт" } }, "application/*+json": { "schema": { "$ref": "#/компоненти/схеми/Продукт" } } } }, "отговори": { "200": { "описание": "Успех", "съдържание": { "текст/обикновено": { "schema": { "type": "string" } }, "application/json": { "schema": { "type": "string" } }, "text/json": { "schema": { "type": "string" } } } } } } } }, "компоненти": { "schemas": { "Информация": { "тип": "обект", "свойства": { "isDiscount": { "type": "boolean", "по подразбиране": false }, "isVip": { "type": "boolean", "default": null, "nullable": вярно } }, "допълнителниСвойства": false }, "Продукт": { "тип": "обект", "свойства": { "name": { "type": "string", "nullable": вярно }, "disabled": { "type": "boolean", "по подразбиране": вярно }, "info": { "$ref": "#/components/schemas/Information" } }, "допълнителниСвойства": false } } }
} (Край)
|