Comment générer du code client java pour la documentation de l'API swagger REST
Mon scénario est le suivant.
j'ai un swagger .json par exemple.: http://petstore.swagger.io/v2/swagger.json Je veux utiliser un client java généré pour le reste de L'API ci-dessus, comme:
PetApi petApi = new PetApi();
Pet pet = new Pet;
pet.setName("cica");
pet.setId(1L);
petApi.addPet(pet);
System.out.println(petApi.getById(1L));`
Expexted de sortie: cica
et le nouveau pet est stocké selon l'implantation de L'API REST.
j'ai généré avec succès le talon du serveur pour le petstore avec la commande:
java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar generate
-i http://petstore.swagger.io/v2/swagger.json
-l spring-mvc
-o samples/server/petstore/spring-mvc
mais ce code de projet maven est un serveur code. Il a des annotations comme @RequestMapping
PetApi.java
et a aussi un WebMvcConfiguration.class
.
Je ne veux pas avoir de talon de serveur. Je veux avoir une bibliothèque de clients pour l'API REST.
y a-t-il un outil qui peut générer la bibliothèque client appropriée pour moi? Dois-je modifier le talon du serveur, donc il contient tous les modèles ou dois-je utiliser un springRestTemplate simple?
Merci pour les réponses!
6 réponses
je pense que vous n'utilisez pas la bonne valeur pour le paramètre -l
de Swagger Codegen (vous utilisez spring-mvc
qui est une technologie côté serveur). Vous pouvez essayer d'utiliser la valeur java
.
vous pourriez aussi remarquer qu'il y a un outil, le Restlet Studio, qui permet de générer du code à partir du contenu Swagger. Pour Java, il s'appuie principalement sur le framework Restlet mais je pense qu'il pourrait répondre à vos besoins.
J'espère que cela vous aidera, Thierry
au lieu d'utiliser le pot, vous pouvez aussi utiliser https://generator.swagger.io pour générer les SDK (Java, Ruby, PHP, etc) en ligne sans rien installer. Voici un exemple:
curl -X POST -H "content-type:application/json" -d '{"swaggerUrl":"http://petstore.swagger.io/v2/swagger.json"}' https://generator.swagger.io/api/gen/clients/java
et voici un exemple de réponse:
{"code":"1445940806041","link":"https://generator.swagger.io/api/gen/download/1445940806041"}
vous pouvez ensuite télécharger le SDK zippé à partir du lien.
Pour plus d'options sur la personnalisation de la sortie de https://generator.swagger.io, veuillez vous référer à https://github.com/swagger-api/swagger-codegen#online-generators
(Swagger Generator fait partie du projet Swagger Codegen (libre, open source) que vous pouvez exécuter votre générateur Swagger local aussi bien)
Pour votre scénario, votre commande devrait ressembler à ceci
java -jar modules/swagger-codegen-cli/target/swagger-codegen-cli.jar generate
-i http://petstore.swagger.io/v2/swagger.json
-l java
-o samples/server/petstore/spring-mvc
les autres options pour convertir swagger en jave sont:
mais avec le projet GitHub c'est à vous de décider quelle bibliothèque (jersey, jersey2, okhttp-gson, etc.) à utiliser lors de la conversion de swagger en code client ou serveur Java. Avec le générateur.swagger.io vous pouvez également décider quelle bibliothèque utiliser. Il pourrait y avoir un amélioration de l'éditeur.swagger.io pour être en mesure de sélectionner la bibliothèque à utiliser. Prendre en considération est que le swagger.les options io sont complètement libres, tandis que Restlet et APIMATIC sont freemium.
probablement la façon la plus rapide et la plus facile de le faire:
wget https://oss.sonatype.org/content/repositories/releases/io/swagger/swagger-codegen-cli/2.2.1/swagger-codegen-cli-2.2.1.jar
java -jar swagger-codegen-cli-2.2.1.jar generate -l <language> -i <pathOrUrlOfSwaggerSpec>
plus d'info ici
Juste un idiot extension la réponse de@wing328.
curl -X POST -H "content-type:application/json" -d '{"swaggerUrl":"http://petstore.swagger.io/v2/swagger.json"}' https://generator.swagger.io/api/gen/clients/java
Si cette erreur SSL (certificat de problème)
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: https://curl.haxx.se/docs/sslcerts.html
Ajouter un commutateur A-k à curl. Exemple:
curl -k -X POST -H "content-type:application/json" -d '{"swaggerUrl":"http://petstore.swagger.io/v2/swagger.json"}' https://generator.swagger.io/api/gen/clients/java
Réponse
{"code":"7e542952-5385-4e34-8cf6-6196722fb18b","link":"https://generator.swagger.io/api/gen/download/7e542952-5385-4e34-8cf6-6196722fb18b"}
envoi de la charge swagger spec JSON complète au lieu de L'URL
au lieu d'utiliser swaggerUrl avec une URL vers la spécification OpenAPI/Swagger, vous pouvez également inclure la spécification dans la charge JSON avec spec, par exemple,
{ "options": {}, "spec": { "swagger": "2.0", "info": { "version": "1.0.0", "title": "Test API" }, ... } }
Plus D'Info: Doc Officiel
bien que swagger generator génère un SDK Java, les sdk APIMATIC sont assez matures, détaillées, et donnent plus de flexibilité que Swagger Gen.vous devriez essayer APIMATIC SDK generator, vous allez adorer.