鉴于现有的JAX-RS注释API接受&返回json,带有jackson-annotated类型,有没有办法可以生成一些YAML Swagger文档?我的计划B是编写一些使用反射来查找REST注释类型的代码,制作他们的参数的散列图。返回,然后抓取这些类以获取Jackson注释,并以这种方式生成文档。
我更愿意使用已经存在的解决方案来编写一次性的东西。我发现这个Swagger模块声称它可以解析Jackson配置(https://github.com/FasterXML/jackson-module-swagger),但我不太了解Swagger了解哪些模块以及我是否可以使用它来从现有代码生成Swagger。
答案 0 :(得分:1)
您可能想要查看此项目:https://github.com/sdaschner/jaxrs-analyzer
它可以为JAX-RS自动生成Swagger文档。据我所知,杰克逊没有考虑具体的注释。
答案 1 :(得分:1)
Swagger将为带注释的方法生成交互式文档。您不需要编写自己的抓取工具。添加lib:
<dependency>
<groupId>com.wordnik</groupId>
<artifactId>swagger-jaxrs_2.10</artifactId>
<version>1.3.13</version>
<scope>compile</scope>
</dependency>
配置它:
private void configureSwagger(String swaggerBasePath){
SwaggerConfig swaggerConfig = new SwaggerConfig();
ConfigFactory.setConfig(swaggerConfig);
swaggerConfig.setSwaggerVersion("Version");
swaggerConfig.setApiVersion("1");
swaggerConfig.setBasePath("http://example.com:8080/your-service");
ScannerFactory.setScanner(new DefaultJaxrsScanner());
ClassReaders.setReader(new DefaultJaxrsApiReader());
}
注释您的服务和方法:
@Path("/v1/items")
@Api(value = "/v1/items", description = "API description for Swagger")
public class ItemsService {
@GET
@Path("/list")
@ApiOperation(value = "Get items list", notes = "Returns items list.")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public ItemsResponse getItems(){
...
}
}
添加Swagger UI文件夹并修改其index.html
源以加载REST服务文档URL。