Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 49069|Відповідь: 4

[ASP.NET] ASP.NET яма стандартних параметрів інтерфейсу Swagger у Core(8).

[Копіювати посилання]
Опубліковано 08.05.2021 13:27:02 | | | |
Swagger — це приписувальна та повна структура для створення, опису, виклику та візуалізації веб-сервісів у стилі RESTful.

Загальна мета — щоб клієнт і файлова система оновлювалися з тією ж швидкістю, що й сервер. Методи, параметри та моделі файлу тісно інтегровані в серверний код, що дозволяє API завжди синхронізуватися. Swagger ніколи не робив розгортання та використання потужних API простішим.

огляд

ASP.NET Core (7) Глибокий аналіз вихідного коду фреймворку
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET Core (VI) DI вручну отримує метод інжекції об'єктів
https://www.itsvse.com/thread-9595-1-1.html

ASP.NET Core (п'ять) базується на розподілених транзакціях CAP
https://www.itsvse.com/thread-9593-1-1.html

ASP.NET Фільтр Core(4) уніфікована валідація моделі ModelState
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Ядро (iii) Динамічно створювати екземпляри за допомогою ActivatorUtilities
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Ядро (2) Перезапуск додатку за кодом
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) використовує кешування Redis
https://www.itsvse.com/thread-9393-1-1.html

Спочатку створіть новий проєкт 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
      }
    }
  }
}

(Кінець)






Попередній:Java використовує JDBC для підключення SQL URL
Наступний:Кафка вручну встановлює зміщення зсуву
Опубліковано 22.09.2021 20:45:47 |
Навчися вчитися...
Опубліковано 22.09.2021 20:59:49 |
Вчуся вчитися, стара залізо, стільки оновлень, що я не встигаю за ними
Опубліковано 16.05.2023 11:22:31 |
RE: ASP.NET Core(八) 之 Swagger UI 默认参数的坑 [修改]
Розширений режим
Опубліковано 16.05.2023 17:20:36 |
Вчитися вчитися
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com