2016-03-02 19 views
2

我目前正在将Swagger(版本1.5.7中的swagger-jaxrs artifact)集成到我们现有的JAX-RS REST应用程序中。添加Swagger之后,我将@Api注释添加到了我们的接口类中,并且已经获得了一个看起来不错的文档。Swagger忽略JAX-RS @Produces当操作未使用@ApiOperation注释

不幸的是扬鞭不接受我的API方法的@Produces注解之前,我与注释这些@ApiOperation方法:

没有列出文/平原为返回的媒体类型:

@GET 
@Path("/overallStatus") 
@Produces(MediaType.TEXT_PLAIN) 
public String getOverallStatus() { 
} 

是否列出它:

@GET 
@Path("/overallStatus") 
@Produces(MediaType.TEXT_PLAIN) 
@ApiOperation(value = "Get the overall system status") 
public String getOverallStatus() { 
} 

有没有办法让Swagger输出中的媒体类型没有添加@ApiOperation到它们全部?由于所需的信息已经存在,我不明白为什么我需要它。

回答

3

您必须添加@ApiOperation到您的JAX-RS端点,因为没有@ApiOperation注释方法会被忽略,因为每扬鞭Wiki页面:

只有方法被标注了@ApiOperation将被扫描并添加了Swagger定义。

你可以在这里找到更多的信息:https://github.com/swagger-api/swagger-core/wiki/Annotations-1.5.X#apioperation

+0

这似乎是不正确的,因为这些方法在我扬鞭定义显示 - 只有“生产”的部分是缺少 – Nitek

+0

然后将文档出来同步。但是,查看用于扫描注释的代码,似乎期望出现'@ ApiOperation':[link](https://github.com/swagger-api/swagger-core/blob/master/modules/ swagger-jaxrs/src/main/java/io/swagger/jaxrs/Reader.java#L805) –

+0

不幸的是,我真的不知道为什么这是必要的。我将创建一个功能请求来改变这种行为。 – Nitek