Swagger UI с Tynamo Resteasy для гобеленов 5.4

Я использую tynamo resteasy с моим проектом Tapestry 5.4. Я хотел бы включить Swagger для документирования и обмена API с другими командами. Хотя я вижу, что Swagger уже находится в зависимости от проекта RestEasy, он не работает "из коробки"

я добавил

@Api к классу "Ресурс" (расположен в /rest/ пакет) и@ApiOperation к GET метод

Мне нужно изменить AppModule или же web.xml в любом случае зацепить чванство пользовательского интерфейса? Есть ли где-нибудь пример (github и т. Д.), Которому я могу следовать?

Кроме того, будет ли доступен API Swagger на localhost/swagger/myendpoint?

2 ответа

Решение

Вот пошаговый процесс:

Получить swagger-jaxrs: https://mvnrepository.com/artifact/io.swagger/swagger-jaxrs/1.5.0

Создать SwaggerModule.java в каталоге "modules" (пример: com.mysite.mypkg.modules)

public class SwaggerModule {
  @Contribute(SymbolProvider.class)
  @ApplicationDefaults
  public static void provideSymbols(MappedConfiguration<String, Object> configuration) {
    configuration.add(ResteasySymbols.CORS_ENABLED, true);
  }

  @Contribute(javax.ws.rs.core.Application.class)
  public static void contributeApplication(Configuration<Object> singletons) {
    singletons.addInstance(io.swagger.jaxrs.listing.ApiListingResource.class);
    singletons.addInstance(io.swagger.jaxrs.listing.SwaggerSerializers.class);
  }

  @Startup
  public static void swagger(javax.ws.rs.core.Application application,
      BaseURLSource baseURLSource,
      @Symbol(InternalConstants.TAPESTRY_APP_PACKAGE_PARAM) String basePackage,
      @Symbol(ResteasySymbols.MAPPING_PREFIX) String restPath,
      @Symbol(SymbolConstants.APPLICATION_VERSION) String version) {
    application.getSingletons(); 
    BeanConfig config = new BeanConfig();
    config.setSchemes(new String[]{"http"});
    config.setVersion("1.0.2");
    config.setHost("localhost:8080");
    config.setBasePath("/mysite" + restPath);
    config.setTitle("Mysite Rest Documentation");
    config.setResourcePackage("com.mysite.mypkg.rest");//where your rest resources are located
    config.setScan(true);
  }

В вашем AppModule.java импортируйте SwaggerModule (Гобелен 5.4)

@ImportModule(SwaggerModule.class)
public class AppModule {...
}

swagger.json а также swagger.yaml теперь можно получить доступ как:

http://localhost:8080/mysite/rest/swagger.json

Большое спасибо @ascandroli выше за указание на основы

Взгляните на этот старый коммит: https://github.com/tynamo/tapestry-resteasy/commit/9a4c2979fda83900480449f25df8cb5e919e4306

Обратите особое внимание на SwaggerModule. Код довольно старый, и я почти уверен, что он не будет работать "из коробки", если вы скопируете и вставите его как есть, но он даст вам очень хорошее представление о том, как работают связи между проектами и требуемой настройкой.

Похоже, я опоздал на вечеринку всего на три года, но в любом случае мне нужна была интеграция с чванством для проекта, поэтому я взял код @ascandroli, обновил его до OpenAPI 3.0 (ядро swagger 2.x) и сделал интеграцию с чванством своей собственной, отдельной submodule, чтобы он работал для пользователей в готовом виде, просто добавив зависимость. Детали немного отрывочны, но исходный код модуля tapestry-resteasy-swagger находится на github, а координаты GAV на данный момент: org.tynamo: tapestry-resteasy-swagger:0.0.2. Я добавлю дополнительную информацию, если позволит время, но пока проверю интегрированный тестовый проект.

Другие вопросы по тегам