Swagger api列表是空的

Miz*_*man 6 api rest jax-rs jersey swagger

最近我用我的一个项目配置了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", "称号": ""}, "主人": "本地主机:8080", "基本路径": "/ myapi" "方案":[ "HTTP"]}

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

招摇 - 没有API的空列表

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

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

有什么帮助吗?....

小智 3

我遇到了同样的问题,我使用了一种对我有用的不同方法,仅在我的应用程序类中添加信息。如果您有的话,这可能会帮助您:

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,swagger.json中就出现了带@API注解的类的链接

大部分是使用您使用的相同手册完成的:https://github.com/swagger-api/swagger-core/wiki/Swagger-Core-Jersey-1.X-Project-Setup-1.5