如何为swagger REST API文档生成java客户端代码
我的情况如下 我大摇大摆。例如: 我想为上面的REST API使用生成的java客户端,如:如何为swagger REST API文档生成java客户端代码,java,rest,swagger,Java,Rest,Swagger,我的情况如下 我大摇大摆。例如: 我想为上面的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生成服
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
我不想要服务器存根。我想要一个用于PetStoreRESTAPI的客户端库
是否有一个工具可以为我生成合适的客户端库?我应该修改服务器存根,因此它有所有的模型,还是应该使用一个简单的springRestTemplate
谢谢你的回答 我认为您没有为Swagger Codegen的参数
-l
使用正确的值(您使用的是服务器端技术spring mvc
)。您可以尝试使用值java
您还可以注意到,有一个工具,允许从招摇过市的内容生成代码。对于Java,它主要依赖于Restlet框架,但我认为它可以满足您的需要
希望它能帮助你,
Thierry除了使用JAR,您还可以使用来在线生成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
有关自定义输出的更多选项,请参阅
(Swagger Generator是Swagger Codegen项目(免费、开源)的一部分,您也可以运行本地的Swagger Generator)
截至2017年7月,Java API客户端生成器支持以下HTTP库:Jersey 1.x和2.x、Reformation 1.x和2.x、okhttp、Feign、RESTEasy、RestTemplate对于您的场景,您的命令应该如下所示
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的其他选项包括:
尽管在GitHub项目中,将swagger转换为Java客户机或服务器代码时,由您决定使用哪个库(jersey、jersey2、okhttp gson等)。使用generator.swagger.io,您还可以。可能还有一个选项,可以选择要使用的库。要考虑的是SWAGRU.IO选项是完全免费的,而RestLead和Apimic是FEMEME.
尽管SiggGER生成器生成java SDK,但是APIMIC SDK的成熟、详细,并且提供了更大的灵活性,让您可以尝试APIMIC SDK生成器,你会喜欢的。
这可能是最快、最简单的方法:wgethttps://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-i
curl -k -X POST -H "content-type:application/json" -d '{"swaggerUrl":"http://petstore.swagger.io/v2/swagger.json"}' https://generator.swagger.io/api/gen/clients/java
回应
发送完整的swagger spec JSON负载而不是URL
而不是将swaggerUrl与OpenAPI/Swagger规范的URL一起使用,
您还可以使用spec将spec包含在JSON负载中,例如
{
"options": {},
"spec": {
"swagger": "2.0",
"info": {
"version": "1.0.0",
"title": "Test API"
},
...
}
}
更多信息:谢谢您的回答。我无法理解我怎么会错过手册中的这一部分,但这正是我需要的答案。editor.swagger.io使用generator.swagger.io生成API客户端、服务器存根,和API文档。@wing328您是对的,我知道如果您使用swagger codegen项目或在线版本(generator.swagger.io),仍然会产生影响。联机时,您无法选择用于转换的库。您可以。有关如何传递各种选项以自定义输出,请参阅。对于editor.swagger.io,还讨论了添加菜单以自定义输出:感谢您的输入,我相应地更新了我的答案。如果你现在觉得没问题,请随时投票。请澄清一下,宠物店的最终URL是,否则swagger-codegen-cli.jar会抛出一个com.fasterxml.jackson.core.JsonParseExceptionI,我认为这与主题无关。我认为在UNIX系统上使用甚至安装“curl”命令是一个不同的问题。@csikos.balint它是相关的,因为当我尝试时,它导致了证书错误。。。我没有在这里添加旋度的随机选项。
curl -k -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":"7e542952-5385-4e34-8cf6-6196722fb18b","link":"https://generator.swagger.io/api/gen/download/7e542952-5385-4e34-8cf6-6196722fb18b"}
{
"options": {},
"spec": {
"swagger": "2.0",
"info": {
"version": "1.0.0",
"title": "Test API"
},
...
}
}