Как сообщить dropwizard-swagger / swagger-ui, что для метода ресурса нет тела запроса? - PullRequest
0 голосов
/ 29 мая 2018

Я интегрирую dropwizard-swagger в большой существующий проект.Теперь у меня есть конечная точка Swagger UI, но я замечаю, что кажется непреклонным, что у каждого метода должен быть параметр body.

В частности, первый параметр в определении метода, у которого нет аннотации @ApiParam, интерпретируется как тело запроса.Похоже, что нет способа указать параметр body, и не существует способа исключить параметры из того, что они автоматически помечаются как таковые Swagger UI.Это означает, что функциональность «Try it Out» не работает для большой части конечных точек, так как тела запрещены спецификацией, но Swagger UI продолжает настаивать на их наличии.

Например, рассмотрим следующий метод в файле UserResource:

@GET
@Path("v1/users/{userId}/subscriptions")
@ApiOperation(value = "Get user subscriptions", notes = "Returns information about the users current and past subscriptions.")
@UserAccessRequired
@RolesAllowed({//a list of appropriate roles})
@Produces(CompanyMediaType.APPLICATION_API_V1_JSON)
public SubscriptionsDTOV1 getSubscriptionsForUser(@Auth DashboardUser dashboardUser, @JooqInject DSLContext database,
                                                  @Context ResourceContext resourceContext,
                                                  @Context ContainerRequestContext crc,
                                                  @ApiParam(value = "ID of user", type = "Integer") @NotNull @UnwrapValidatedValue @PathParam("userId") IntParam userId) {

Swagger интерпретирует первый параметр, @Auth DashboardUser dashboardUser, как тело запроса, и генерирует следующийпросмотр в Swagger UI:

Swagger UI с параметром тела

Поскольку это GET, запрещено иметь тело и пытается удалитьсодержимое тела в Swagger UI во время тестирования не работает, так как поле автоматически заполняется {}.

Как указать Swagger, что здесь нет параметра body, и заставить его работать?Простое размещение @ApiParam перед другими параметрами метода не работает, так как эта аннотация игнорируется, если также нет аннотации @QueryParam / @PathParam / etc.

1 Ответ

0 голосов
/ 30 мая 2018

Оказывается, добавление @ApiParam (hidden = true), похоже, сделало свое дело.Я пробовал это раньше и не получил результатов, должно быть, где-то опечатка.

...