Я пишу API, используя библиотеку HalBuilder для представлений HAL.
В настоящее время мне нужно иметь два разных метода для представлений JSON и HAL. Например, мой VersionResource
включает в себя следующие два метода:
@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 for DI и Jersey для представлений JSON.]
Я читал в https://github.com/swagger-api/swagger-spec/issues/146#issuecomment-59082475:
для каждого проекта мы не перегружаем определения типа ответа для одного и того же кода ответа.
Поэтому я думаю, что плагин Maven создает недопустимый документ Swagger.
Какие у вас варианты?