1

我在Tapestry 5.4 项目中使用tynamo resteasy 。我想将 Swagger 合并到文档中并与其他团队共享 API。虽然我看到 swagger 已经在 RestEasy 的项目依赖项中,但它不能“开箱即用”

我已经添加

@Api到“资源”类(位于/rest/包中) 和@ApiOperation方法GET

我是否需要更改AppModuleweb.xml无论如何要挂钩招摇的用户界面?我可以在任何地方遵循示例(github等)吗?

另外,swagger api 可以在localhost/swagger/myendpoint吗?

4

3 回答 3

2

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

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

于 2017-05-31T10:08:46.913 回答
2

这是一个逐步的过程:

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

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.json和现在swagger.yaml可以访问为:

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

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

于 2017-06-05T00:19:34.070 回答
1

看起来我只迟到了三年,但无论如何我需要一个项目的招摇集成,所以我拿了@ascandroli 的代码,将它更新到 OpenAPI 3.0 (招摇核心 2.x ) 并让招摇集成成为自己的,单独的子模块,只需添加一个依赖项,即可为用户提供开箱即用的功能。细节有点粗略,但是Tapestry-resteasy-swagger 模块源在 github 上现在 GAV 坐标是 org.tynamo:tapestry-resteasy-swagger:0.0.2。我会在时间允许的情况下添加更多信息,但同时检查集成测试项目。

于 2020-04-21T21:33:57.583 回答