Джерси, использующий приложение / json и приложение / x-www-form-urlencoded - PullRequest
0 голосов
/ 18 декабря 2018

Я хочу иметь что-то вроде

@POST
@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_FORM_URLENCODED})
@Path("/")
void create(@Suspended final AsyncResponse asyncResponse,
            @ApiParam(required = true) @NotNull @Valid final CreateServiceRequest service);

, чтобы я мог использовать как JSON, так и URL-кодированный код.Но когда я делаю POST-запрос с -d foo=bar, я получаю 415 неподдерживаемую отформатированную ошибку.

Возможно ли использовать оба, используя одну и ту же конечную точку?Если это невозможно, как я могу выполнить автоматическую проверку тела для закодированного URL?Я вижу, что люди используют MultivaluedMap, но это просто карта.Я хочу убедиться, что указаны правильные поля.

1 Ответ

0 голосов
/ 19 декабря 2018

Я считаю, что это невозможно с Джерси (по крайней мере, я не смог найти пример или документацию для этого).Но помните, что вы можете извлечь общую логику в метод и иметь два метода для одного и того же с различной директивой @Consumes.

@POST
@Consumes({MediaType.APPLICATION_JSON})
@Path("/")
void createJson(@Suspended final AsyncResponse asyncResponse,
                        @ApiParam(required = true) @NotNull @Valid final CreateServiceRequest service) {
    create(service)
}


@POST
@Consumes({MediaType.APPLICATION_FORM_URLENCODED})
@Path("/")
void createJson(@Suspended final AsyncResponse asyncResponse,
                        @ApiParam(required = true) @NotNull @Valid final CreateServiceRequest service) {
    create(service)
}
...