Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 47519|Răspunde: 4

[ASP.NET] ASP.NET prăpastie a parametrilor impliciti ai interfeței Swagger în Core(8).

[Copiază linkul]
Postat pe 08.05.2021 13:27:02 | | | |
Swagger este un cadru prescriptiv și complet pentru construirea, descrierea, apelarea și vizualizarea serviciilor web în stil RESTful.

Scopul general este ca clientul și sistemul de fișiere să se actualizeze la aceeași viteză ca serverul. Metodele, parametrii și modelele fișierului sunt strâns integrate în codul serverului, permițând API-urilor să rămână sincronizate în orice moment. Swagger nu a făcut niciodată mai ușoară implementarea și utilizarea API-urilor puternice.

recenzie

ASP.NET Core (7) Analiză aprofundată a codului sursă al framework-ului
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET Core (VI) DI obține manual metoda de injectare a obiectelor
https://www.itsvse.com/thread-9595-1-1.html

ASP.NET Core (cinci) se bazează pe tranzacții distribuite CAP
https://www.itsvse.com/thread-9593-1-1.html

ASP.NET Filtrul Core(4) validare unificată a modelului ModelState
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Core (iii) Crearea dinamică a instanțelor folosind ActivatorUtilities
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Nucleu (2) Repornește aplicația prin cod
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) folosește cache Redis
https://www.itsvse.com/thread-9393-1-1.html

Mai întâi, creează un nou proiect ASP.NET Core 3.1 și folosește nuget pentru a instala pachetul Swashbuckle.AspNetCore cu următoarea comandă:

Configurează serviciul Swagger în fișierul startup.cs după cum urmează:

Metoda ConfigureServices

Metoda Configure

Creează un nou controler de Test cu următorul cod:

Interfața Test Controller Create Product parameter model model este următoarea:

După începerea proiectului, accesați la:http://localhost:18979/swagger/index.html, așa cum se arată în figura de mai jos:



swagger.json Conținutul este următorul:

{
  "openapi": "3.0.1",
  "info": {
    "titlu": "My API",
    "Versiune": "V1"
  },
  "căi": {
    "/api/Test/Create": {
      "post": {
        "etichete": [
          "Test"
        ],
        "requestBody": {
          "conținut": {
            "application/json": {
              "schema": {
                "$ref": "#/componente/scheme/Produs"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/componente/scheme/Produs"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/componente/scheme/Produs"
              }
            }
          }
        },
        "răspunsuri": {
          "200": {
            "descriere": "Succes",
            "conținut": {
              "text/simplu": {
                "schema": {
                  "Tip": "Șnur"
                }
              },
              "application/json": {
                "schema": {
                  "Tip": "Șnur"
                }
              },
              "text/json": {
                "schema": {
                  "Tip": "Șnur"
                }
              }
            }
          }
        }
      }
    }
  },
  "componente": {
    "scheme": {
      "Informații": {
        "tip": "obiect",
        "proprietăți": {
          "isDiscount": {
            "tip": "boolean"
          },
          "isVip": {
            "tip": "boolean",
            "anulabil": adevărat
          }
        },
        "Proprietăți suplimentare": false
      },
      "Produs": {
        "tip": "obiect",
        "proprietăți": {
          "name": {
            "tip": "string",
            "anulabil": adevărat
          },
          "dezactivat": {
            "tip": "boolean"
          },
          "info": {
            "$ref": "#/componente/scheme/Informații"
          }
        },
        "Proprietăți suplimentare": false
      }
    }
  }
}



Am constatat că atât tipurile booleene, cât și tipurile booleene anulabile sunt implicite: adevărat,În dezvoltarea zilnică, dacă bool-ul nu este atribuit, implicitul ar trebui să fie fals, iar tipul nul, implicit să fie nul., încercăm să folosim swagger-ul pentru a simula angajamentul, dacă parametrii nu sunt observați,Accidentele sunt predispuse。 (Săptămâna trecută, am folosit swagger pentru a simula că un parametru bool era adevărat implicit, ceea ce a făcut ca mesajele WeChat să fie trimise către toți oamenii.)

Cum pot atribui implicit un tip boolean falsului? Ce zici de tipurile null atribuite null?

Creează o nouă clasă care moștenește din ISchemaFilter, iar codul este următorul:

Și când adaugi serviciul swagger, adaugă filtrul AddSwaggerGen după cum urmează:

Pentru unele câmpuri bool speciale, valoarea implicită trebuie setată ca true și poate fi adăugată[DefaultValue(adevărat)]Caracteristicile sunt următoarele:



{
  "Nume": "Șnur",
  "Invalid": Adevărat,
  "info": {
    "isDiscount": fals,
    "isVip": null
  }
}
swagger.json Fișierul este următorul:
{
  "openapi": "3.0.1",
  "info": {
    "titlu": "My API",
    "Versiune": "V1"
  },
  "căi": {
    "/api/Test/Create": {
      "post": {
        "etichete": [
          "Test"
        ],
        "requestBody": {
          "conținut": {
            "application/json": {
              "schema": {
                "$ref": "#/componente/scheme/Produs"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/componente/scheme/Produs"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/componente/scheme/Produs"
              }
            }
          }
        },
        "răspunsuri": {
          "200": {
            "descriere": "Succes",
            "conținut": {
              "text/simplu": {
                "schema": {
                  "Tip": "Șnur"
                }
              },
              "application/json": {
                "schema": {
                  "Tip": "Șnur"
                }
              },
              "text/json": {
                "schema": {
                  "Tip": "Șnur"
                }
              }
            }
          }
        }
      }
    }
  },
  "componente": {
    "scheme": {
      "Informații": {
        "tip": "obiect",
        "proprietăți": {
          "isDiscount": {
            "tip": "boolean",
            "implicit": fals
          },
          "isVip": {
            "tip": "boolean",
            "implicit": nul,
            "anulabil": adevărat
          }
        },
        "Proprietăți suplimentare": false
      },
      "Produs": {
        "tip": "obiect",
        "proprietăți": {
          "name": {
            "tip": "string",
            "anulabil": adevărat
          },
          "dezactivat": {
            "tip": "boolean",
            "implicit": adevărat
          },
          "info": {
            "$ref": "#/componente/scheme/Informații"
          }
        },
        "Proprietăți suplimentare": false
      }
    }
  }
}

(Sfârșit)






Precedent:Java folosește JDBC pentru a conecta URL-ul sqlite
Următor:Kafka setează manual offset-ul
Postat pe 22.09.2021 20:45:47 |
Învață să înveți...
Postat pe 22.09.2021 20:59:49 |
Învăț să învăț, fierul vechi, sunt atât de multe actualizări, nu pot ține pasul
Postat pe 16.05.2023 11:22:31 |
RE: ASP.NET Core(八) 之 Swagger UI 默认参数的坑 [修改]
Mod avansat
Postat pe 16.05.2023 17:20:36 |
Învață să înveți
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com