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

2022-09-01 13:07:39

我的方案如下。

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

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

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

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 项目代码是一个服务器代码。它具有像 in 这样的注释,并且还有一个 .@RequestMappingPetApi.javaWebMvcConfiguration.class

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

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

感谢您的回答!


答案 1

除了使用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月,Swagger Codegen的大约50名顶级贡献者和模板创建者决定分叉Swagger Codegen,以维护一个名为OpenAPI Generator的社区驱动版本。请参阅问答以获取更多信息。


答案 2

我认为你没有为Swagger Codegen的参数使用正确的值(你使用的是服务器端技术)。您可以尝试使用值 。-lspring-mvcjava

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

希望它能帮助你,蒂埃里