1

我正在使用 HalBuilder 库为HAL表示编写一个 API。

就目前而言,我需要为 JSON 和 HAL 表示提供两种不同的方法。例如,myVersionResource包括以下两种方法:

@GET
@ApiOperation(value = "Find all versions", response = Version.class, responseContainer = "List")
@Produces({MediaType.APPLICATION_JSON})
public Response getAsJson() {
    List<Version> versions = repository.selectAll();
    return Response.ok().entity(versions).build();
}

@GET
@ApiOperation(value = "Find all versions", notes="Returns HAL format", response = Representation.class, responseContainer = "List")
@Produces({RepresentationFactory.HAL_JSON})
public Representation getAsHalJson() {
    List<Version> versions = repository.selectAll();
    return this.versionRepresentationFactory.createResourceRepresentation(versions);
}

(注意:我确信有更好的方法来折叠这些方法,我正在寻找一种方法来做到这一点)

但我的直接问题是使用两种方法会导致我的 Swagger 文档中出现重复条目​​:

招摇用户界面

这两者GET /versions实际上是相同的东西,但是它们有不同的返回类型,所以 Swagger 希望它们不同。

我想把这两个折叠起来。我在这里有什么选择?

[可能值得指出的是,我正在使用 Swagger Maven 插件来生成我的文档。该应用程序还使用 Guice 进行 DI 和 Jersey 进行 JSON 表示。]

4

1 回答 1

2

我在https://github.com/swagger-api/swagger-spec/issues/146#issuecomment-59082475中阅读:

根据设计,我们不会为相同的响应代码重载响应类型定义。

所以我认为 Maven 插件创建了一个无效的 Swagger 文档。

你有什么选择?

于 2015-02-13T09:22:27.683 回答