我的方案如下 .
我有一个招摇.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));`
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
但是这个maven项目代码是一个服务器代码 . 它在 PetApi.java
中有 @RequestMapping
之类的注释,并且还有一个 WebMvcConfiguration.class
.
我不想拥有服务器存根 . 我想拥有petstore REST API的客户端库 .
有没有可以为我生成适当的客户端库的工具?我应该修改服务器存根,因此它有所有模型或者我应该使用简单的springRestTemplate吗?
谢谢你的答案!
6 回答
我认为你没有为Swagger Codegen的参数
-l
使用正确的值(你使用spring-mvc
这是一种服务器端技术) . 您可以尝试使用值java
.您还可以注意到有一个工具Restlet Studio,它允许从Swagger内容生成代码 . 对于Java,它主要依赖于Restlet框架,但我认为它可以满足您的需求 .
希望它对你有帮助,蒂埃里
除了使用JAR之外,您还可以使用https://generator.swagger.io在线生成SDK(Java,Ruby,PHP等)而无需安装任何内容 . 这是一个例子:
这是一个示例响应:
然后,您可以从链接下载压缩的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
对于您的场景,您的命令应该如下所示
将swagger转换为jave的其他选项有:
swagger-codegen
generator.swagger.io
editor.swagger.io
Restlet
APIMATIC
虽然使用GitHub项目,您可以决定在将swagger转换为Java客户端或服务器代码时使用哪个库(jersey,jersey2,okhttp-gson等) . 使用generator.swagger.io,你也可以decide which library to use . 可能有enhancement to editor.swagger.io也可以选择要使用的库 . 要考虑的是swagger.io选项是完全免费的,而Restlet和APIMATIC是免费的 .
可能是最快速,最简单的方法:
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>
更多信息here
只是@wing328's answer的愚蠢扩展 .
如果导致此错误(SSL证书问题)
添加-k开关以卷曲 . 例:
回复
发送完整的swagger规范JSON有效负载而不是URL
更多信息:Official Doc
虽然swagger生成器生成了一个Java SDK,但是APIMATIC sdk非常成熟,详细,并且提供了更多Swagger Gen的灵活性 . 你应该尝试使用APIMATIC sdk生成器,你会喜欢它 .