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 @RequestMappingPetApi.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!

23
demandé sur Thierry Templier 2015-10-26 23:01:20

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

11
répondu Thierry Templier 2015-10-27 08:07:49

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)

11
répondu William Cheng 2017-07-26 18:19:51

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.

9
répondu Huber 2016-09-02 07:12:37

probablement la façon la plus rapide et la plus facile de le faire:

  1. wget https://oss.sonatype.org/content/repositories/releases/io/swagger/swagger-codegen-cli/2.2.1/swagger-codegen-cli-2.2.1.jar
  2. java -jar swagger-codegen-cli-2.2.1.jar generate -l <language> -i <pathOrUrlOfSwaggerSpec>

plus d'info ici

1
répondu zygimantus 2017-05-06 10:27:09

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

0
répondu so-random-dude 2017-05-24 16:18:50

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.

-4
répondu Waseem Hassan 2016-10-24 04:32:55