当前位置: 首页 > 知识库问答 >
问题:

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

仰成天
2023-03-14

我的设想如下。

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

扩展输出:<code>cica</code>,新宠物根据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中的@RequestMapping注释.java并且还具有WebMvcConfiguration.class

我不想有服务器存根。我想要一个用于petstore REST API的客户端库。

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

感谢您的回答!

共有3个答案

方季同
2023-03-14

对于你的方案,你的命令应如下所示

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

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

  • swagger-代码生成
  • generator.swagger.io
  • editor.swagger.io
  • Reslet
  • APIMATIC

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

柳胜
2023-03-14

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

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

希望对你有帮助,蒂埃里

云联
2023-03-14

除了使用 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月,JavaAPI客户端生成器支持以下HTTP库

更新:2018年5月,大约50名Swagger Codecen的顶级贡献者和模板创建者决定分叉Swagger Codecen以维护一个名为OpenAPI生成器的社区驱动版本。请参考Q

 类似资料:
  • 问题内容: 我的情况如下。 我有一个大张旗鼓的.json例如:http : //petstore.swagger.io/v2/swagger.json 我想将生成的Java客户端用于上述REST API,例如: 扩展的输出:新宠物根据REST API的实现进行存储。 我已经使用以下命令成功为petstore生成了服务器存根: 但是此Maven项目代码是服务器代码。它具有in的注释,并且还具有。 我

  • 官方文档说明了以下关于生成客户端和服务器代码的内容。 接下来,我们需要从中生成gRPC客户端和服务器接口。proto服务定义。我们使用带有特殊gRPC Java插件的协议缓冲区编译器protoc来实现这一点。您需要使用proto3编译器(同时支持proto2和proto3语法)来生成gRPC服务。 不幸的是,它只是建议使用Maven或Gradle来生成实际的客户端和服务器存根。 这一代的实际pro

  • 我有一个这样的歌剧API: OpenAPI生成器Maven的插件为schema对象创建了一个请求类“GenerateTokenRequest”,但在API实现类中它没有使用。它生成一个方法,将所有请求的字段作为参数列表。方法如下: 所以,在这种情况下,请求类“GenerateTokenRequest”被生成,但从未使用过。任何人都可以告诉我为什么?有一种使用我的请求类的替代方法吗?我可以在Open

  • 嗯,首先,对不起我的英语不好。 “enderecodao.java”: 和ENDERECO的WebService“servicoEnderEco.java”:

  • 问题内容: 首先,我希望您知道我已经可以连接到Web服务服务器。我问这个问题是因为我想对wsimport生成的客户端如何工作有更深入的了解。根据我的研究,wsimport使用JAXWS。请注意,我对JAXWS不了解。 我使用wsimport生成了客户端。我使用的WSDL来自Axis2 Web服务,并由Axis2自动生成。下面的类是wsimport的结果: 下 下 通过上面的类,我可以确定其中包含W

  • 在做其他事情之前,我想让你知道我已经可以连接到web服务服务器了。我问这个问题是因为我想更深入地了解wsimport生成的客户端是如何工作的。根据我的研究,wsimport使用JAXWS。请注意,我不了解JAXWS。 我使用wsimport生成了我的客户机。我使用的WSDL来自Axis2 web服务,由Axis2自动生成。下面的类是wsimport的结果: 在下 在下 通过上面的类,我可以看出包含