带有Tynamo Resteasy for Tapestry 5.4的Swagger UI

时间:2017-05-29 20:13:46

标签: swagger resteasy tapestry tynamo

我在我的Tapestry 5.4项目中使用tynamo resteasy。 我想将Swagger合并到其他团队的文档和共享API。 虽然我发现Swagger已经处于RestEasy的项目依赖中,但它无法正常运行"开箱即用"

我已添加

@Api到"资源" class(位于/rest/包中) 和 @ApiOperation方法的GET

我是否需要更改AppModuleweb.xml才能勾选出虚张声势的用户界面? 我可以在任何地方找到一个例子(github等)吗?

此外,是否可以在localhost/swagger/myendpoint

处获得招摇api

3 个答案:

答案 0 :(得分:2)

看看这个旧提交:https://github.com/tynamo/tapestry-resteasy/commit/9a4c2979fda83900480449f25df8cb5e919e4306

特别注意SwaggerModule。代码相当陈旧,我几乎可以肯定,如果您按原样复制和粘贴它,它将无法开箱即用,但它可以让您非常了解项目之间的连接如何工作和需要的设置。

答案 1 :(得分:1)

这是一步一步的过程:

获得swagger-jaxrs:https://mvnrepository.com/artifact/io.swagger/swagger-jaxrs/1.5.0

在“modules”目录中创建SwaggerModule.java(例如: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(Tapestry 5.4)

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

现在可以将swagger.jsonswagger.yaml视为:

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

非常感谢上面的@ascandroli指出了基础知识

答案 2 :(得分:1)

看起来我晚了三年,但是无论如何我都需要对项目进行大刀阔斧的集成,所以我采用了@ascandroli的代码,将其更新为OpenAPI 3.0(swagger core 2.x)并对其进行了大刀阔斧的集成拥有自己的独立子模块,只需添加依赖项,即可为用户开箱即用。细节有点粗略,但是tapestry-resteasy-swagger module source is at githubGAV coordinates for now are org.tynamo:tapestry-resteasy-swagger:0.0.2。如果时间允许,我将添加更多信息,但同时请检查集成测试项目。