最近我用我的一个项目配置了swagger。它在tomcat上使用jersey2和JAX-WS来获得宁静的API。我使用了以下手册来配置
https://github.com/swagger-api/swagger-core/wiki/Swagger-Core-Jersey-2.X-Project-Setup-1.5
$ {basepath} /swagger.json响应以及
{"招摇":" 2.0""信息" {"版本":" 1.0.0&# 34;,"标题":""}"主机":"本地主机:8080""基本路径" :" / myapi""方案":[" HTTP"]}
不幸的是,它不包含我资源包中的任何api。 我尝试过以下问题的答案
swagger - empty listing with no API
但它也没有帮助。 以上答案使用com.wordnik.swagger。* package(s) 但是在手册中我得到了io.swagger。* package(s),它没有 JaxrsApiReader类
我的假设是swagger无法从资源包中扫描我的api列表。 但无法弄清楚我错过了哪种配置或哪些代码片段。
任何帮助?....
答案 0 :(得分:4)
您似乎忘记使用@Api
答案 1 :(得分:3)
我有同样的问题,我使用了一种适合我的方法,只在我的Application类中添加信息。如果您有一个,这可能对您有所帮助:
public class MyApi extends Application {
public MyApi() {
super();
BeanConfig beanConfig = new BeanConfig();
beanConfig.setTitle("MyApi");
beanConfig.setVersion("0.0.1");
beanConfig.setSchemes(new String[]{"http", "https"});
beanConfig.setHost("localhost:8080");
beanConfig.setBasePath("/mypath");
//putting only the path to my api unblocked me, I removed "io.swagger.resources"
beanConfig.setResourcePackage("system.organization.api");
beanConfig.setScan(true);
beanConfig.setPrettyPrint(true);
}
@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> s = new HashSet<>();
s.add(MyApis);
//for swagger
s.add(ApiListingResource.class);
s.add(SwaggerSerializers.class);
return s;
}
}
然后,带有@API注释的类链接出现在swagger.json
中主要使用您使用的相同手册:https://github.com/swagger-api/swagger-core/wiki/Swagger-Core-Jersey-1.X-Project-Setup-1.5