Swagger UI 与 Tynamo Resteasy for Tapestry 5.4

Swagger UI with Tynamo Resteasy for Tapestry 5.4

我在 Tapestry 5.4 项目中使用 tynamo resteasy。 我想合并 Swagger 来记录并与其他团队共享 API。 虽然我看到 swagger 已经在 RestEasy 的项目依赖项中,但它不起作用 "out of the box"

我已经添加了

@Api 到 "Resource" class (位于 /rest/ 包中) 和 @ApiOperationGET 方法

我是否需要更改 AppModuleweb.xml 以吸引大摇大摆的 UI? 有没有我可以遵循的示例(github 等)?

此外,swagger api 是否会在 localhost/swagger/myendpoint 上市?

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

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

这是一个循序渐进的过程:

获取 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 指出基础知识

看来我只迟到了三年,但无论如何我需要一个项目的 swagger 集成,所以我采用了@ascandroli 的代码,将其更新为 OpenAPI 3.0 (swagger core 2.x) and made swagger integration its own, separate submodule to make it work out-of-the-box for users, by just adding a dependency. The details are bit sketchy, but the tapestry-resteasy-swagger module source is at github and the GAV coordinates for now are org.tynamo:tapestry-resteasy-swagger:0.0.2。我会在时间允许的情况下添加更多信息,但同时检查集成测试项目。