Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 47519|Svar: 4

[ASP.NET] ASP.NET gropen med standardparametrarna i Swagger UI i Core(8).

[Kopiera länk]
Publicerad på 2021-05-08 13:27:02 | | | |
Swagger är ett föreskrivande och komplett ramverk för att bygga, beskriva, anropa och visualisera RESTful-liknande webbtjänster.

Det övergripande målet är att klienten och filsystemet ska uppdateras i samma hastighet som servern. Metoder, parametrar och modeller för filen är tätt integrerade i serversidans kod, vilket gör att API:erna kan vara synkroniserade hela tiden. Swagger har aldrig gjort det enklare att distribuera och använda kraftfulla API:er.

recension

ASP.NET Core (7) Djupgående analys av ramverkets källkod
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET Core (VI) DI hämtar manuellt metoden för att injicera objekt
https://www.itsvse.com/thread-9595-1-1.html

ASP.NET Core (fem) baseras på CAP-distribuerade transaktioner
https://www.itsvse.com/thread-9593-1-1.html

ASP.NET Core(4)-filter enhetlig ModelState-modellvalidering
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Core (iii) Skapa instanser dynamiskt med hjälp av ActivatorUtilities
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Core (2) Starta om applikationen via kod
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) använder Redis-cachelagring
https://www.itsvse.com/thread-9393-1-1.html

Skapa först ett nytt projekt ASP.NET Core 3.1 och använd nuget för att installera Swashbuckle.AspNetCore-paketet med följande kommando:

Konfigurera Swagger-tjänsten i startup.cs-filen enligt följande:

ConfigureServices-metoden

Konfigurera-metoden

Skapa en ny testkontroller med följande kod:

Test Controller Create-gränssnittet Produktparametermodellobjekt är följande:

Efter att projektet har startats, gå åt:http://localhost:18979/swagger/index.html, som visas i figuren nedan:



swagger.json Innehållet är som följer:

{
  "openapi": "3.0.1",
  "info": {
    "titel": "Mitt API",
    "version": "v1"
  },
  "Vägar": {
    "/api/Test/Create": {
      "post": {
        "taggar": [
          "Test"
        ],
        "requestBody": {
          "innehåll": {
            "application/json": {
              "schema": {
                "$ref": "#/komponenter/scheman/Produkt"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/komponenter/scheman/Produkt"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/komponenter/scheman/Produkt"
              }
            }
          }
        },
        "svar": {
          "200": {
            "beskrivning": "Framgång",
            "innehåll": {
              "text/klar": {
                "schema": {
                  "typ": "string"
                }
              },
              "application/json": {
                "schema": {
                  "typ": "string"
                }
              },
              "text/json": {
                "schema": {
                  "typ": "string"
                }
              }
            }
          }
        }
      }
    }
  },
  "komponenter": {
    "schemas": {
      "Information": {
        "typ": "objekt",
        "egenskaper": {
          "isDiscount": {
            "typ": "booleskt"
          },
          "isVip": {
            "typ": "boolesk",
            "Nullbar": Sant
          }
        },
        "additionalProperties": falskt
      },
      "Produkt": {
        "typ": "objekt",
        "egenskaper": {
          "name": {
            "typ": "sträng",
            "Nullbar": Sant
          },
          "inaktiverad": {
            "typ": "booleskt"
          },
          "info": {
            "$ref": "#/komponenter/scheman/Information"
          }
        },
        "additionalProperties": falskt
      }
    }
  }
}



Vi fann att både booleska typer och nullerbara booleska typer som standard är: sann,I daglig utveckling, om bool inte är tilldelad, ska standarden vara falsk, och nulltypen ska defaulta till null, försöker vi använda swagger för att simulera commiten, om parametrarna inte märks,Olyckor är benägna。 (Förra veckan använde jag swagger för att simulera att en bool-parameter var sann som standard, vilket gjorde att WeChat-meddelanden skickades till alla.)

Hur sätter jag en boolesk typ på false som standard? Hur är det med att null-typer tilldelas null?

Skapa en ny klass som ärver från ISchemaFilter, och koden är följande:

Och när du lägger till swagger-tjänsten, lägg till filtret AddSwaggerGen enligt följande:

För vissa speciella boolfält måste standardvärdet sättas till true och kan läggas till[DefaultValue(true)]Kännetecknen är följande:



{
  "namn": "snöre",
  "Funktionsnedsatt": Sant,
  "info": {
    "isDiscount": falskt,
    "isVip": null
  }
}
swagger.json Filen är följande:
{
  "openapi": "3.0.1",
  "info": {
    "titel": "Mitt API",
    "version": "v1"
  },
  "Vägar": {
    "/api/Test/Create": {
      "post": {
        "taggar": [
          "Test"
        ],
        "requestBody": {
          "innehåll": {
            "application/json": {
              "schema": {
                "$ref": "#/komponenter/scheman/Produkt"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/komponenter/scheman/Produkt"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/komponenter/scheman/Produkt"
              }
            }
          }
        },
        "svar": {
          "200": {
            "beskrivning": "Framgång",
            "innehåll": {
              "text/klar": {
                "schema": {
                  "typ": "string"
                }
              },
              "application/json": {
                "schema": {
                  "typ": "string"
                }
              },
              "text/json": {
                "schema": {
                  "typ": "string"
                }
              }
            }
          }
        }
      }
    }
  },
  "komponenter": {
    "schemas": {
      "Information": {
        "typ": "objekt",
        "egenskaper": {
          "isDiscount": {
            "typ": "boolesk",
            "default": falskt
          },
          "isVip": {
            "typ": "boolesk",
            "default": null,
            "Nullbar": Sant
          }
        },
        "additionalProperties": falskt
      },
      "Produkt": {
        "typ": "objekt",
        "egenskaper": {
          "name": {
            "typ": "sträng",
            "Nullbar": Sant
          },
          "inaktiverad": {
            "typ": "boolesk",
            "default": sant
          },
          "info": {
            "$ref": "#/komponenter/scheman/Information"
          }
        },
        "additionalProperties": falskt
      }
    }
  }
}

(Slut)






Föregående:Java använder JDBC för att koppla sqlite URL-problemet
Nästa:Kafka ställer manuellt in offsetoffset
Publicerad på 2021-09-22 20:45:47 |
Lär dig att lära dig...
Publicerad på 2021-09-22 20:59:49 |
Lär mig att lära sig, gamla järn, det finns så många uppdateringar, jag kan inte hänga med
Publicerad på 2023-05-16 11:22:31 |
RE: ASP.NET Core(八) 之 Swagger UI 默认参数的坑 [修改]
Avancerat läge
Publicerad på 2023-05-16 17:20:36 |
Lär dig att lära dig
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com