Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 47519|Ответ: 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 Core (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": "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"
          }
        },
        "дополнительныеСвойства": ложь
      }
    }
  }
}

(Конец)






Предыдущий:Java использует JDBC для связи проблемы с URL sqlite
Следующий:Kafka вручную устанавливает смещение
Опубликовано 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