如何为swagger REST API文档生成Java客户端代码

csi*_*int 24 java rest swagger

我的情况如下.

我有一个招摇.json例如:http://petstore.swagger.io/v2/swagger.json 我想为上面的REST API使用生成的java客户端,例如:

PetApi petApi = new PetApi();
Pet pet = new Pet;
pet.setName("cica");
pet.setId(1L);
petApi.addPet(pet);
System.out.println(petApi.getById(1L));`
Run Code Online (Sandbox Code Playgroud)

Expexted输出:cica根据REST API实现存储新宠物.

我已使用以下命令为petstore成功生成服务器存根:

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
Run Code Online (Sandbox Code Playgroud)

但是这个maven项目代码是一个服务器代码.它像注释@RequestMappingPetApi.java,也有一个WebMvcConfiguration.class.

我不想拥有服务器存根.我想拥有一个petstore REST API的客户端库.

有没有可以为我生成适当的客户端库的工具?我应该修改服务器存根,因此它有所有模型或者我应该使用简单的springRestTemplate吗?

谢谢你的回答!

Wil*_*eng 13

您也可以使用https://generator.swagger.io在线生成SDK(Java,Ruby,PHP等)而无需安装任何内容,而不是使用JAR .这是一个例子:

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
Run Code Online (Sandbox Code Playgroud)

这是一个示例响应:

{"code":"1445940806041","link":"https://generator.swagger.io/api/gen/download/1445940806041"}  
Run Code Online (Sandbox Code Playgroud)

然后,您可以从链接下载压缩的SDK.

有关自定义https://generator.swagger.io输出的更多选项,请参阅https://github.com/swagger-api/swagger-codegen#online-generators

(Swagger Generator是Swagger Codegen项目(免费,开源)的一部分,您可以运行本地Swagger生成器)

截至2017年7月,Java API客户端生成器支持以下HTTP库:Jersey 1.x&2.x,Retrofit 1.x&2.x,okhttp,Feign,RESTEasy,RestTemplate


Thi*_*ier 11

我认为你没有-l为Swagger Codegen 的参数使用正确的值(你使用的spring-mvc是服务器端技术).您可以尝试使用该值java.

您还可以注意到有一个工具,即Restlet Studio,它允许从Swagger内容生成代码.对于Java,它主要依赖于Restlet框架,但我认为它可以满足您的需求.

希望它对你有帮助,蒂埃里


Hub*_*ber 10

对于您的场景,您的命令应该如下所示

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
Run Code Online (Sandbox Code Playgroud)

将swagger转换为jave的其他选项包括:

虽然使用GitHub项目,您可以决定在将swagger转换为Java客户端或服务器代码时使用哪个库(jersey,jersey2,okhttp-gson等).使用generator.swagger.io,您还可以决定使用哪个库.editor.swagger.io可能有一个增强功能,可以选择要使用的库.要考虑的是swagger.io选项是完全免费的,而Restlet和APIMATIC是免费增值.


zyg*_*tus 5

可能是最快和最简单的方法:

  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>

更多信息请点击此处