web-dev-qa-db-fra.com

Comment générer un client C # à partir de la spécification Swagger 1.2?

Il semble y avoir des millions d'options pour chaque plate-forme, mais j'ai du mal à trouver une solution simple pour C #. Tous ceux que j'ai trouvés semblent m'avoir causé des problèmes: soit ils ne fonctionnent tout simplement pas (par exemple http://swaggercodegen.azurewebsites.net/ ), soit ils ne prennent en charge que la version 2.0 (par exemple AutoRest et NSwag ). La moitié des outils ne savent même pas quelles versions ils prennent en charge :

Je connais le --- (outil officiel , mais cela nécessite JDK 7 qui n'est actuellement pas une option pour moi.

En désespoir de cause, j'ai même essayé de convertir la spécification de swagger en 2.0, mais la moitié des outils de conversion que j'ai essayés ne fonctionnaient pas, donnaient des conseils contradictoires ou je ne pouvais pas comprendre comment utiliser (je me suis retrouvé très profondément dans nodejs jusqu'aux genoux). ..est-ce vraiment le nouveau monde courageux?! Ramenez WSDL ;-)).

13
Jack Ukleja

Vous pouvez utiliser le codegen de swagger en ligne pour créer des clients sans rien installer:

https://generator.swagger.io/

Vous choisiriez POST/gen/clients/{language} et entrez un corps comme celui-ci:

{
  "options": {},
  "swaggerUrl": "http://petstore.swagger.io/v2/swagger.json"
}

Mettez votre propre URL pour accéder à la spécification. Si vous devez passer des options, vous pouvez les mettre dans le hachage options. La liste des options disponibles pour C # est également disponible à partir du générateur:

https://generator.swagger.io/api/gen/clients/csharp-dotnet2

{
  "packageName": {
    "opt": "packageName",
    "description": "C# package name (convention: Camel.Case).",
    "type": "string",
    "default": "IO.Swagger"
  },
  "packageVersion": {
    "opt": "packageVersion",
    "description": "C# package version.",
    "type": "string",
    "default": "1.0.0"
  },
  "clientPackage": {
    "opt": "clientPackage",
    "description": "C# client package name (convention: Camel.Case).",
    "type": "string",
    "default": "IO.Swagger.Client"
  }
}
5
fehguy