从现有REST API生成Swagger文档

鉴于现有的JAX-RS注释API接受并返回带有jackson-annotated类型的json,有没有办法可以生成一些YAML Swagger文档? 我的计划B是编写一些使用reflection来查找REST注释类型的代码,创建其参数和返回的哈希映射,然后为Jackson注释抓取这些类,并以这种方式生成文档。

我更愿意使用已经存在的解决方案来编写一次性的东西。 我发现这个Swagger模块声称它可以解析Jackson的配置( https://github.com/FasterXML/jackson-module-swagger ),但我不太了解Swagger了解哪些模块以及我是否可以使用它来从现有代码生成Swagger。

您可能想看看这个项目: https : //github.com/sdaschner/jaxrs-analyzer

它可以为JAX-RS自动生成Swagger文档。 据我所知,jackson的具体注释没有被考虑在内。

Swagger将为注释方法生成交互式文档。 您不需要编写自己的爬虫。 添加lib:

 com.wordnik swagger-jaxrs_2.10 1.3.13 compile  

配置它:

 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。