我想要类似的东西
@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编码。但是,当我使用-d foo=bar
发出POST请求时,出现415不支持的格式化错误。
是否可以使用相同的端点来消费两者?如果不可能,如何对正文进行自动验证以进行URL编码?我看到人们使用MultivaluedMap
,但这只是一张地图。我想确保提供正确的字段。
答案 0 :(得分:1)
我相信Jersey不可能做到这一点(至少我找不到相应的示例或文档)。
但是请记住,您可以将通用逻辑提取到一个方法中,并使用不同的@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)
}