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": { "title": "My API", «Версия»: «V1» }, "пути": { "/api/Test/Create": { "post": { "теги": [ «Тест» ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Product" } }, "text/json": { "schema": { "$ref": "#/components/schemas/Product" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/Product" } } } }, "responses": { "200": { «описание»: «Успех», "content": { "text/plain": { "schema": { "type": "string" } }, "application/json": { "schema": { "type": "string" } }, "text/json": { "schema": { "type": "string" } } } } } } } }, "components": { "schemas": { "Информация": { "type": "объект", "свойства": { "isDiscount": { "type": "boolean" }, "isVip": { "type": "boolean", «нулируемый»: верно } }, "дополнительныеСвойства": ложь }, "Product": { "type": "объект", "свойства": { "name": { "type": "string", «нулируемый»: верно }, "disabled": { "type": "boolean" }, "info": { "$ref": "#/components/schemas/Information" } }, "дополнительныеСвойства": ложь } } }
}
Мы обнаружили, что по умолчанию как булевые, так и нулируемые булевые типы: true,В ежедневной разработке, если буль не назначен, по умолчанию значение должно быть ложным, а тип нуля — по умолчанию в null, мы пытаемся использовать swagger для имитации коммита, если параметры не замечаются,Несчастные случаи часто встречаются。 (На прошлой неделе я использовал swagger, чтобы смоделировать, что параметр bool по умолчанию верен, из-за чего сообщения WeChat отправлялись всем.)
Как по умолчанию назначить булевый тип на false тип? А как насчёт того, чтобы нулевым типам было присвоено null?
Создаём новый класс, который наследует от ISchemaFilter, и код выглядит следующим образом:
При добавлении сервиса swagger добавьте фильтр AddSwaggerGen следующим образом:
Для некоторых специальных булевых полей значение по умолчанию должно быть установлено в true и может быть добавлено[DefaultValue(true)]Характеристики следующие:
{ "name": "string", «disabled»: верно, "info": { "isDiscount": ложно, "isVip": null }
} swagger.json Дело следующее:
{ "openAPI": "3.0.1", "info": { "title": "My API", «Версия»: «V1» }, "пути": { "/api/Test/Create": { "post": { "теги": [ «Тест» ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Product" } }, "text/json": { "schema": { "$ref": "#/components/schemas/Product" } }, "application/*+json": { "schema": { "$ref": "#/components/schemas/Product" } } } }, "responses": { "200": { «описание»: «Успех», "content": { "text/plain": { "schema": { "type": "string" } }, "application/json": { "schema": { "type": "string" } }, "text/json": { "schema": { "type": "string" } } } } } } } }, "components": { "schemas": { "Информация": { "type": "объект", "свойства": { "isDiscount": { "type": "boolean", «default»: ложно }, "isVip": { "type": "boolean", «default»: null, «нулируемый»: верно } }, "дополнительныеСвойства": ложь }, "Product": { "type": "объект", "свойства": { "name": { "type": "string", «нулируемый»: верно }, "disabled": { "type": "boolean", «default»: верно }, "info": { "$ref": "#/components/schemas/Information" } }, "дополнительныеСвойства": ложь } } }
} (Конец)
|