2016-11-17 82 views
0

鑑於現有的JAX-RS註釋API接受&返回json和jackson-annotated類型,有沒有辦法可以生成一些YAML Swagger文檔?我的計劃B是編寫一些使用反射來查找REST註釋類型的代碼,對其參數&返回進行散列映射,然後對這些類進行抓取以獲取Jackson註釋,並以此方式生成文檔。從現有的REST api生成Swagger文檔

我寧願使用已經存在的解決方案來編寫一次性的事情。我發現這個Swagger模塊聲稱它可以解析Jackson配置(https://github.com/FasterXML/jackson-module-swagger),但我對Swagger瞭解了什麼模塊以及是否可以使用它從現有代碼生成Swagger方面知之甚少。

回答

1

你可能想看看這個項目:https://github.com/sdaschner/jaxrs-analyzer

它可以爲JAX-RS自動生成揚鞭文檔。據我所知,傑克遜沒有考慮到具體的註釋。

+0

這給我一個我正在尋找的起點 - 我可以建立在這個基礎上。謝謝! –

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(){ 
      ... 
     } 

} 

添加揚鞭UI文件夾,並修改其index.html源加載您的REST服務文檔URL。

+1

感謝您的回答,但我試圖避免添加swagger符號和不得不攜帶更多的依賴關係。 :-( –

+0

@Justas:不明白你的意思:在哪裏添加lib?在哪裏「配置它」?在哪裏註釋? - 我無法在swagger中找到它 – Peter

+0

@Peter - 理解你的問題你使用什麼構建工具?什麼框架? – Justas