Liberty Beta上的apidiscovery-1.0

时间:2016-04-06 22:37:51

标签: java swagger websphere-liberty

我有一个已经运行了一段时间的应用程序。我决定调查Swagger ..并且很高兴地发现Liberty beta已经整合了Swagger。

我决定尝试一下..但我似乎无法发现任何事情......

我的功能..

<featureManager>
    <feature>webProfile-7.0</feature>
    <feature>adminCenter-1.0</feature>

    <!-- The following features are in beta! -->
    <feature>bluemixUtility-1.0</feature>
    <feature>cloudant-1.0</feature>
    <feature>logstashCollector-1.0</feature>
    <feature>logmetCollector-1.0</feature>
    <feature>osgiAppConsole-1.0</feature>
    <feature>osgiBundle-1.0</feature>
    <feature>passwordUtilities-1.0</feature>
    <feature>wsAtomicTransaction-1.2</feature>
    <feature>apiDiscovery-1.0</feature>
    <feature>jaxrs-2.0</feature>
    <feature>jdbc-4.1</feature>
    <feature>localConnector-1.0</feature>
</featureManager>

我的apiDiscovery定义

<apiDiscovery>

    <webModuleDoc contextRoot="/MYCONTEXTROOT" docURL="/swagger.json" enabled="true"/>  

</apiDiscovery> 

但是......没什么。我已经通过访问

验证了IBM API

https://localhost:9443/ibm/api/explorer

我的应用程序有@Path等等......根据this,这就是我所需要的。

从该网站开始..

  

该产品会扫描Web应用程序中用于JAX-RS和的所有类   Swagger注释,使用 @Path ,@ Api和。搜索类   @SwaggerDefinition注释。该产品也是自动的   在Web应用程序期间生成相应的Swagger文档   部署或启动。

我错过了什么吗?

干杯!

詹姆斯

2 个答案:

答案 0 :(得分:0)

问题解决了......

似乎我在做这件事时有两个问题......

@POST @Path("/widget/{name}")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response createWidget(  @Context HttpServletRequest request, String bodyText )

{name}未用作PathParam。我想这曾经是:-)只有2个地方。 它确实出现在日志中......不是马上就可以了。修正了这些问题并且效果非常好。

詹姆斯

答案 1 :(得分:0)

如果您有JAX-RS注释,则不需要在server.xml中使用“webModuleDoc”属性。该属性适用于您在应用程序中的其他位置(例如/swagger.json)或远程URL(例如文档存储库)中预先生成的swagger.json或swagger.yaml文件的情况。

因此,如果您有注释,则全部自动完成,无需webModuleDoc。

以下日志规范将揭示我们为每个应用程序生成的swagger文档:

<logging traceSpecification="RESTAPIDiscovery=finest"/>

常见的使用错误是在同一个jaxrs应用程序中有两个具有相同名称的方法。根据Swagger模型,Liberty使用方法名称作为操作ID,因此它们必须是唯一的。