首页 文章

Swagger api列表是空的

提问于
浏览
5

最近我配置了swagger与我的一个项目 . 它在tomcat上使用jersey2和JAX-WS来实现restful API . 我使用了以下手册进行配置

https://github.com/swagger-api/swagger-core/wiki/Swagger-Core-Jersey-2.X-Project-Setup-1.5

$ /swagger.json响应如下

{“swagger”:“2.0”,“info”:{“version”:“1.0.0”,“title”:“”},“host”:“localhost:8080”,“basePath”:“/ myapi ”, “计划”:[ “HTTP”]}

不幸的是,它不包含我资源包中的任何api . 我试过以下问题的答案

swagger - empty listing with no API

但它也没有帮助 . 上面的答案使用com.wordnik.swagger . * package(s)但是用手册我得到了io.swagger . * package(s),它没有JaxrsApiReader类

我的假设是swagger无法从资源包中扫描我的api列表 . 但无法弄清楚我错过了哪种配置或哪些代码段 .

有什么帮助吗?....

2 回答

  • 3

    看起来您忘了用 @Api 标记其余 endpoints

  • 4

    我有同样的问题,我使用了一种对我有用的不同方法,只在我的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

相关问题