Я хочу иметь что-то вроде
@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
, но это всего лишь карта. Я хочу убедиться, что указаны правильные поля.
Я считаю, что с Джерси это невозможно (по крайней мере, я не смог найти для этого пример или документацию).
Но помните, что вы можете извлечь общую логику в метод и иметь два метода для одного и того же с разными директивами @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)
}
Вам необходимо использовать
@BeanParam
для метода application / x-ww-form-urlencoded.