我有一个已经运行了一段时间的应用程序。我决定调查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 APIhttps://localhost:9443/ibm/api/explorer
我的应用程序有@Path等等......根据this,这就是我所需要的。
从该网站开始..
该产品会扫描Web应用程序中用于JAX-RS和的所有类 Swagger注释,使用 @Path ,@ Api和。搜索类 @SwaggerDefinition注释。该产品也是自动的 在Web应用程序期间生成相应的Swagger文档 部署或启动。
我错过了什么吗?
干杯!
詹姆斯
答案 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,因此它们必须是唯一的。