Swagger api列表是空的

时间:2015-06-29 04:53:37

标签: api rest jersey jax-rs 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&# 34;,"标题":""}"主机":"本地主机:8080""基本路径" :" / myapi""方案":[" HTTP"]}

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

swagger - empty listing with no API

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

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

任何帮助?....

2 个答案:

答案 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