Не могу получить json от Swagger (swagger-jaxrs)

На самом деле я пытаюсь создать swagger.json для своих служб REST. Мне удалось сделать это с помощью jersy, но теперь мы не используем jersy в наших сервисах, мы просто используем Jax-rs, поэтому теперь я не могу его сгенерировать и получил код ошибки 404.

Вот мои зависимости pom

<dependencies>

    <dependency>
        <groupId>io.swagger</groupId>
        <artifactId>swagger-jaxrs</artifactId>
        <version>1.5.6</version>
    </dependency>
    <dependency>
        <groupId>javax.ws.rs</groupId>
        <artifactId>jsr311-api</artifactId>
        <version>1.1.1</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
    </dependency>
    <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-all</artifactId>
        <version>1.9.5</version>
    </dependency>
    <dependency>
        <groupId>org.reflections</groupId>
        <artifactId>reflections</artifactId>
        <version>0.9.10</version>
    </dependency>
    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.4</version>
    </dependency>

</dependencies>

и это мое приложение для конфигурации приложения

import java.util.HashSet;
import java.util.Set;

import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;

import com.skios.endpoint.EmployeeEndpoint;
import com.skios.endpoint.ShopsEndpoint;

import io.swagger.jaxrs.config.BeanConfig;
import io.swagger.jaxrs.listing.ApiListingResource;
import io.swagger.jaxrs.listing.SwaggerSerializers;

@ApplicationPath("api")
public class AppConfiguration extends Application {

public AppConfiguration() {
    BeanConfig beanConfig = new BeanConfig();
    beanConfig.setVersion("1.0.2");
    beanConfig.setSchemes(new String[] { "http" });
    beanConfig.setHost("localhost:7070");
    beanConfig.setBasePath("app");
    beanConfig.setResourcePackage("com.skios.endpoint");
    beanConfig.setScan(true);
}

@SuppressWarnings({ "rawtypes", "unchecked" })
@Override
public Set<Class<?>> getClasses() {

    Set<Class<?>> resources = new HashSet();
    resources.add(ShopsEndpoint.class);
    resources.add(EmployeeEndpoint.class);
    // ...
    resources.add(ApiListingResource.class);
    resources.add(SwaggerSerializers.class);
    return resources;
}
}

и это мои конечные точки

@Api(value = "/employees", description = "Endpoint for employee listing")
@Path("/employees")
public class EmployeeEndpoint {}

@Path("/shops")
@Api(value="/shops", description="Shops")
public class ShopsEndpoint {}

и теперь, когда я пытаюсь ввести путь к файлу swagger.json

http://localhost:7070/MavenSwaggerTest/api/swagger.json

i got 404 error code.

Так в чем проблема? Может кто-нибудь мне помочь? Благодарность


person mibrahim.iti    schedule 15.01.2016    source источник
comment
Вы видите другие ошибки в логах (при запуске)? Можете ли вы дать образец URL-адреса, который вы используете для доступа к своему API (что, я полагаю, вы можете успешно сделать)?   -  person Ron    schedule 19.01.2016
comment
@Ron: Большое спасибо за ответ, но на самом деле у меня не было ошибок в консоли, я тестирую это на Tomcat v8, также это мой проект ›› drive.google.com/open?id=0B1u4YdligQ8YYllFUGVCbm5seHM, проверьте это   -  person mibrahim.iti    schedule 19.01.2016
comment
Дело не в том, что swagger.json недоступен, дело в том, что ничто в вашем API не доступно - даже ресурс вашего магазина. JAX-RS - это просто спецификация и набор интерфейсов. Вы можете написать что-то общее, но вам нужно привязать это к реализации. swagger-jaxrs потянет старую версию трикотажа, но этого будет недостаточно. Ваш первый шаг - исправить приложение, чтобы оно работало.   -  person Ron    schedule 20.01.2016
comment
@Ron: Спасибо за вашу озабоченность. На самом деле я удалил все зависимости, но просто сохранил ›› io.swagger swagger-jaxrs версии 1.5.6 и добавил классы Emplyee и shopping к ресурсам, а затем запустил проект через wildfly версии 9x вместо сервера Tomcat и i. запустил его без проблем, также я получил файл swagger.json во время выполнения, еще раз большое спасибо   -  person mibrahim.iti    schedule 20.01.2016
comment
@ Supun Wijerathne На самом деле ваш ответ мне не помог, так как проблема была в самом проекте не из этой конфигурации, но в целом я решил проблему, используя только зависимость io.swagger и игнорируя другие зависимости. Кстати, спасибо за ответ, но я не могу отметить его как правильный ответ на свой вопрос.   -  person mibrahim.iti    schedule 10.10.2016


Ответы (1)


Вы неправильно настроили свои ApplicationPath и BasePath.

Настройте это так.

@ApplicationPath("/api")

beanConfig.setBasePath("/api");

Теперь http://localhost:7070/MavenSwaggerTest/api/swagger.json будет работать, если нет других проблем.

person Supun Wijerathne    schedule 27.05.2016