Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 47519|Отговор: 4

[ASP.NET] ASP.NET яма с стандартните параметри на Swagger UI в Core(8).

[Копирай линк]
Публикувано в 8.05.2021 г. 13:27:02 ч. | | | |
Swagger е предписателна и пълна рамка за изграждане, описание, извикване и визуализиране на уеб услуги в стил RESTful.

Общата цел е клиентът и файловата система да се обновяват със същата скорост като сървъра. Методите, параметрите и моделите на файла са тясно интегрирани в сървърния код, позволявайки на API-тата да останат синхронизирани по всяко време. Swagger никога не е улеснявал внедряването и използването на мощни API-та.

преглед

ASP.NET Ядро (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": {
    "заглавие": "Моят 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
      }
    }
  }
}

(Край)






Предишен:Java използва JDBC за свързване на проблема със sqlite URL адресите
Следващ: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