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

新手上路,请多包涵

我的情况如下。

我有一个 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));`

扩展输出: cica 新宠物根据 REST API 实现存储。

我已经使用以下命令成功为宠物商店生成了服务器存根:

 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

我不想有一个服务器存根。我想要宠物店 REST API 的客户端库。

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

感谢您的回答!

原文由 csikos.balint 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 838
2 个回答

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

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

希望它能帮助你,蒂埃里

原文由 Thierry Templier 发布,翻译遵循 CC BY-SA 3.0 许可协议

除了使用 JAR,您还可以使用 https://generator.swagger.io 在线生成 SDK(Java、Ruby、PHP 等)而无需安装任何东西。这是一个例子:

 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

这是一个示例响应:

 {"code":"1445940806041","link":"https://generator.swagger.io/api/gen/download/1445940806041"}

然后您可以从链接下载压缩的 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

更新:2018 年 5 月,大约 50 名 Swagger Codegen 的顶级贡献者和模板创建者决定分叉 Swagger Codegen 以维护一个名为 OpenAPI Generator 的社区驱动版本。请参阅 问答 了解更多信息。

原文由 William Cheng 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题