Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 47519|Odpověď: 4

[ASP.NET] ASP.NET propasti výchozích parametrů Swagger UI v Core(8).

[Kopírovat odkaz]
Zveřejněno 08.05.2021 13:27:02 | | | |
Swagger je předpisový a kompletní rámec pro vytváření, popisování, volání a vizualizaci webových služeb ve stylu RESTful.

Celkovým cílem je, aby se klient a souborový systém aktualizovali stejnou rychlostí jako server. Metody, parametry a modely souboru jsou úzce integrovány do serverového kódu, což umožňuje API zůstat synchronizovaná po celou dobu. Swagger nikdy neusnadnil nasazení a používání výkonných API.

přezkoumání

ASP.NET Jádro (7) Hloubková analýza zdrojového kódu frameworku
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET Core (VI) DI ručně získává metodu vstřikování objektů
https://www.itsvse.com/thread-9595-1-1.html

ASP.NET Core (pět) je založen na distribuovaných transakcích podle CAP
https://www.itsvse.com/thread-9593-1-1.html

ASP.NET Filtr Core(4) sjednocený validace modelů ModelState
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Jádro (iii) Dynamicky vytvářet instance pomocí ActivatorUtilities
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Jádro (2) Restartovat aplikaci pomocí kódu
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) používá Redis caching
https://www.itsvse.com/thread-9393-1-1.html

Nejprve vytvořte nový projekt ASP.NET Core 3.1 a pomocí nugetu nainstalujte balíček Swashbuckle.AspNetCore pomocí následujícího příkazu:

Nakonfigurujte službu Swagger v souboru startup.cs následovně:

Metoda ConfigureServices

Metoda konfigurace

Vytvořte nový testovací řadič s následujícím kódem:

Rozhraní Testovací řadič Create Objekt modelu parametrů produktu je následující:

Po zahájení projektu přistup:http://localhost:18979/swagger/index.html, jak je znázorněno na obrázku níže:



swagger.json Obsah je následující:

{
  "openapi": "3.0.1",
  "info": {
    "title": "My API",
    "verze": "v1"
  },
  "cesty": {
    "/api/Test/Create": {
      "post": {
        "tagy": [
          "Test"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schéma": {
                "$ref": "#/komponenty/schémata/Produkt"
              }
            },
            "text/json": {
              "schéma": {
                "$ref": "#/komponenty/schémata/Produkt"
              }
            },
            "application/*+json": {
              "schéma": {
                "$ref": "#/komponenty/schémata/Produkt"
              }
            }
          }
        },
        "responses": {
          "200": {
            "popis": "Úspěch",
            "content": {
              "text/plain": {
                "schéma": {
                  "type": "string"
                }
              },
              "application/json": {
                "schéma": {
                  "type": "string"
                }
              },
              "text/json": {
                "schéma": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Informace": {
        "type": "objekt",
        "vlastnosti": {
          "isDiscount": {
            "Type": "Boolean"
          },
          "isVip": {
            "type": "Boolean",
            "nullable": pravda
          }
        },
        "additionalProperties": false
      },
      "Product": {
        "type": "objekt",
        "vlastnosti": {
          "jméno": {
            "type": "string",
            "nullable": pravda
          },
          "disabled": {
            "Type": "Boolean"
          },
          "info": {
            "$ref": "#/komponenty/schémata/Informace"
          }
        },
        "additionalProperties": false
      }
    }
  }
}



Zjistili jsme, že jak Booleovské, tak nulovatelné Booleovské typy výchozím způsobem jsou: pravda,Při denním vývoji, pokud bool není přiřazen, výchozí hodnota by měla být nepravdivá a nulový typ by měl být výchozí null, snažíme se použít swagger k simulaci commitu, pokud parametry nejsou zaznamenány,Nehody jsou náchylné。 (Minulý týden jsem použil Swagger k simulaci, že bool parametr je ve výchozím nastavení pravdivý, což způsobilo, že zprávy na WeChatu byly posílány všem lidem.)

Jak přiřadím Booleovský typ jako false ve výchozím nastavení? Co takhle nullové typy jsou přiřazeny jako null?

Vytvořte novou třídu, která dědí z ISchemaFilter, a kód je následující:

A při přidání služby Swagger přidejte filtr AddSwaggerGen následovně:

U některých speciálních bool polí je třeba nastavit výchozí hodnotu na true a lze ji přidat[DefaultValue(true)]Charakteristiky jsou následující:



{
  "jméno": "provázek",
  "Postižený": Pravda,
  "info": {
    "isDiscount": nepravdivé,
    "isVip": null
  }
}
swagger.json Soubor je následující:
{
  "openapi": "3.0.1",
  "info": {
    "title": "My API",
    "verze": "v1"
  },
  "cesty": {
    "/api/Test/Create": {
      "post": {
        "tagy": [
          "Test"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schéma": {
                "$ref": "#/komponenty/schémata/Produkt"
              }
            },
            "text/json": {
              "schéma": {
                "$ref": "#/komponenty/schémata/Produkt"
              }
            },
            "application/*+json": {
              "schéma": {
                "$ref": "#/komponenty/schémata/Produkt"
              }
            }
          }
        },
        "responses": {
          "200": {
            "popis": "Úspěch",
            "content": {
              "text/plain": {
                "schéma": {
                  "type": "string"
                }
              },
              "application/json": {
                "schéma": {
                  "type": "string"
                }
              },
              "text/json": {
                "schéma": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Informace": {
        "type": "objekt",
        "vlastnosti": {
          "isDiscount": {
            "type": "Boolean",
            "výchozí": nepravda
          },
          "isVip": {
            "type": "Boolean",
            "výchozí": null,
            "nullable": pravda
          }
        },
        "additionalProperties": false
      },
      "Product": {
        "type": "objekt",
        "vlastnosti": {
          "jméno": {
            "type": "string",
            "nullable": pravda
          },
          "disabled": {
            "type": "Boolean",
            "výchozí": pravda
          },
          "info": {
            "$ref": "#/komponenty/schémata/Informace"
          }
        },
        "additionalProperties": false
      }
    }
  }
}

(Konec)






Předchozí:Java používá JDBC k propojení problému s URL sqlite
Další:Kafka ručně nastavuje offset offset
Zveřejněno 22.09.2021 20:45:47 |
Uč se učit...
Zveřejněno 22.09.2021 20:59:49 |
Učím se učit, staré železo, je tu tolik aktualizací, že nestíhám
Zveřejněno 16.05.2023 11:22:31 |
RE: ASP.NET Core(八) 之 Swagger UI 默认参数的坑 [修改]
Pokročilý režim
Zveřejněno 16.05.2023 17:20:36 |
Učte se učit
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com