Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 47519|Répondre: 4

[ASP.NET] ASP.NET piège des paramètres par défaut de l’interface Swagger dans Core(8).

[Copié le lien]
Publié sur 08/05/2021 13:27:02 | | | |
Swagger est un cadre prescriptif et complet pour construire, décrire, appeler et visualiser des services web de type RESTful.

L’objectif global est que le client et le système de fichiers se mettent à jour à la même vitesse que le serveur. Les méthodes, paramètres et modèles du fichier sont étroitement intégrés au code côté serveur, permettant aux API de rester synchronisées en permanence. Swagger n’a jamais facilité le déploiement et l’utilisation d’API puissantes.

révision

ASP.NET Core (7) Analyse approfondie du code source du framework
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET DI Core (VI) obtient manuellement la méthode d’injection d’objets
https://www.itsvse.com/thread-9595-1-1.html

ASP.NET Core (cinq) est basé sur les transactions distribuées CAP
https://www.itsvse.com/thread-9593-1-1.html

ASP.NET Validation unifiée du modèle ModelState filtre Core(4)
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Core (iii) Créer dynamiquement des instances à l’aide d’ActivatorUtilities
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Core (2) Redémarrer l’application par code
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) utilise la mise en cache Redis
https://www.itsvse.com/thread-9393-1-1.html

Commencez par créer un nouveau projet ASP.NET Core 3.1 et utilisez nuget pour installer le paquet Swashbuckle.AspNetCore avec la commande suivante :

Configurez le service Swagger dans le fichier startup.cs comme suit :

Méthode ConfigureServices

Méthode Configure

Créez un nouveau contrôleur de test avec le code suivant :

L’objet modèle de paramètres de paramètres produit avec interface de Test Controller est le suivant :

Après le début du projet, accédez à :http://localhost:18979/swagger/index.html, comme montré dans la figure ci-dessous :



swagger.json Le contenu est le suivant :

{
  « openapi » : « 3.0.1 »,
  « infos » : {
    « titre » : « Mon API »,
    « version » : « v1 »
  },
  « chemins » : {
    « /api/Test/Create » : {
      « post » : {
        « tags » : [
          « Test »
        ],
        « requestBody » : {
          « content » : {
            « application/json » : {
              « schema » : {
                « $ref » : « #/composants/schémas/Produit »
              }
            },
            « text/json » : {
              « schema » : {
                « $ref » : « #/composants/schémas/Produit »
              }
            },
            « application/*+json » : {
              « schema » : {
                « $ref » : « #/composants/schémas/Produit »
              }
            }
          }
        },
        « réponses » : {
          "200": {
            « description » : « Succès »,
            « content » : {
              « texte/plain » : {
                « schema » : {
                  « type » : « ficelle »
                }
              },
              « application/json » : {
                « schema » : {
                  « type » : « ficelle »
                }
              },
              « text/json » : {
                « schema » : {
                  « type » : « ficelle »
                }
              }
            }
          }
        }
      }
    }
  },
  « components » : {
    « schémas » : {
      « Informations » : {
        « type » : « objet »,
        « propriétés » : {
          « isDiscount » : {
            « type » : « booléen »
          },
          « isVip » : {
            « type » : « booléen »,
            « annulable » : vrai
          }
        },
        « Propriétés additionnelles » : faux
      },
      « Produit » : {
        « type » : « objet »,
        « propriétés » : {
          « nom » : {
            « type » : « corde »,
            « annulable » : vrai
          },
          « handicapé » : {
            « type » : « booléen »
          },
          « infos » : {
            « $ref » : « #/composants/schémas/Informations »
          }
        },
        « Propriétés additionnelles » : faux
      }
    }
  }
}



Nous avons constaté que les types booléens et les types booléens annulables par défaut sont : true,En développement quotidien, si le bool n’est pas assigné, le défaut doit être faux, et le type nul doit être nul par défaut, nous essayons d’utiliser l’assurance pour simuler l’engagement, si les paramètres ne sont pas remarqués,Les accidents sont sujets。 (La semaine dernière, j’ai utilisé swagger pour simuler qu’un paramètre bool était vrai par défaut, ce qui a poussé les messages WeChat à tout le monde.)

Comment assigner un type booléen à faux par défaut ? Que diriez-vous que les types de null soient attribués null ?

Créez une nouvelle classe qui hérite d’ISchemaFilter, et le code est le suivant :

Et lors de l’ajout du service swagger, ajoutez le filtre AddSwaggerGen comme suit :

Pour certains champs bool spéciaux, la valeur par défaut doit être fixée à true et peut être ajoutée[ValorDéfautValeur (vrai)]Les caractéristiques sont les suivantes :



{
  « nom » : « ficelle »,
  « handicapé » : vrai,
  « infos » : {
    « isDiscount » : faux,
    « isVip » : null
  }
}
swagger.json Le fichier est le suivant :
{
  « openapi » : « 3.0.1 »,
  « infos » : {
    « titre » : « Mon API »,
    « version » : « v1 »
  },
  « chemins » : {
    « /api/Test/Create » : {
      « post » : {
        « tags » : [
          « Test »
        ],
        « requestBody » : {
          « content » : {
            « application/json » : {
              « schema » : {
                « $ref » : « #/composants/schémas/Produit »
              }
            },
            « text/json » : {
              « schema » : {
                « $ref » : « #/composants/schémas/Produit »
              }
            },
            « application/*+json » : {
              « schema » : {
                « $ref » : « #/composants/schémas/Produit »
              }
            }
          }
        },
        « réponses » : {
          "200": {
            « description » : « Succès »,
            « content » : {
              « texte/plain » : {
                « schema » : {
                  « type » : « ficelle »
                }
              },
              « application/json » : {
                « schema » : {
                  « type » : « ficelle »
                }
              },
              « text/json » : {
                « schema » : {
                  « type » : « ficelle »
                }
              }
            }
          }
        }
      }
    }
  },
  « components » : {
    « schémas » : {
      « Informations » : {
        « type » : « objet »,
        « propriétés » : {
          « isDiscount » : {
            « type » : « booléen »,
            « default » : faux
          },
          « isVip » : {
            « type » : « booléen »,
            « par défaut » : nul,
            « annulable » : vrai
          }
        },
        « Propriétés additionnelles » : faux
      },
      « Produit » : {
        « type » : « objet »,
        « propriétés » : {
          « nom » : {
            « type » : « corde »,
            « annulable » : vrai
          },
          « handicapé » : {
            « type » : « booléen »,
            « par défaut » : vrai
          },
          « infos » : {
            « $ref » : « #/composants/schémas/Informations »
          }
        },
        « Propriétés additionnelles » : faux
      }
    }
  }
}

(Fin)






Précédent:Java utilise JDBC pour connecter l’URL sqlite
Prochain:Kafka règle manuellement le décalage
Publié sur 22/09/2021 20:45:47 |
Apprends à apprendre...
Publié sur 22/09/2021 20:59:49 |
Apprendre à apprendre, vieux fer, il y a tellement de mises à jour que je n’arrive pas à suivre
Publié sur 16/05/2023 11:22:31 |
RE: ASP.NET Core(八) 之 Swagger UI 默认参数的坑 [修改]
Mode avancé
Publié sur 16/05/2023 17:20:36 |
Apprendre à apprendre
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com