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