首页 文章

从现有REST API生成Swagger文档

提问于
浏览
1

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

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

2 回答

  • 1

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

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

  • 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 .

相关问题