【发布时间】:2015-12-01 08:33:00
【问题描述】:
我正在尝试让 Swagger 自动生成我的 REST API 的 che 文档,但我只得到部分结果。
我正在使用 Resteasy。我添加了 Maven Swagger 依赖项
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-jaxrs</artifactId>
<version>1.5.3</version>
</dependency>
然后我配置了我的应用程序对象
package com.myapp.init;
import java.util.HashSet;
import java.util.Set;
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
import io.swagger.jaxrs.config.BeanConfig;
import io.swagger.jaxrs.listing.ApiListingResource;
import io.swagger.jaxrs.listing.SwaggerSerializers;
@ApplicationPath("/rest")
public class WebappInit extends Application {
public WebappInit() {
BeanConfig beanConfig = new BeanConfig();
beanConfig.setVersion("1.0.0");
beanConfig.setSchemes(new String[]{"http"});
beanConfig.setHost("theIP:8080");
beanConfig.setBasePath("/myapp/rest/");
beanConfig.setResourcePackage("the.resource.package");
beanConfig.setScan(true);
beanConfig.setPrettyPrint(true);
}
public Set<Class<?>> getClasses() {
Set<Class<?>> s = new HashSet<Class<?>>();
// here I add my REST WSs
s.add(ApiListingResource.class);
s.add(SwaggerSerializers.class);
return s;
}
}
然后我运行 Web 应用程序(在 Wildfly 9 服务器上)并转到 URL http://localhost:8080/myapp/rest/swagger.json。这就是我得到的
{
swagger: "2.0",
info: {
version: "1.0.0"
},
host: "10.17.36.215:8080",
basePath: "/devops/rest/",
schemes: [
"http"
]
}
Swagger 似乎无法构建 REST 文档,即使我的 REST 端点是可访问的并且已添加到 Swagger 资源列表中。
可能是什么问题?
谢谢
朱利奥
更新:我检查了在 Swagger init 方法 BeanConfig.classes() 中正确发现了我的 REST 类。
【问题讨论】:
-
您希望在您的 swagger 文档中看到什么?据我所知,您的课程
WebappInit没有任何标有 JAXRS 注释的方法。 -
我希望看到我的 REST 服务列表以及使用它们的有用数据(HTTP 方法、端点、请求和响应主体)。 “据我所知,您的类 WebappInit 没有任何标有 JAXRS 注释的方法”是什么意思?在我的 WebappInit.getClasses() 方法中,我添加了 REST 服务类。这还不够吗?
-
我个人从未见过这种技术。我相信这对你有用,但我不明白如何。例如,您如何调用
ApiListingResource服务?使用像/rest/listing这样的网址? -
不确定是否与此问题直接相关,但您会遇到另一个问题,与this 有关。如果您正在对资源进行类路径扫描,则只需注册 swagger 类即可禁用类路径扫描。
-
@AlexR:我遵循了 JAX-RS 应用程序的 Swagger 指南,它扩展了
Application类:github.com/swagger-api/swagger-core/wiki/…
标签: java rest maven jax-rs swagger