如何使用Bean验证和jax-rs验证标头参数

时间:2018-10-21 18:52:47

标签: jax-rs bean-validation

我有jax-rs资源,每个资源都有相同的标头。使用Bean验证来验证标头是否存在的最佳方法是什么?我知道@HeaderParam,但是我不想更改所有资源中的所有方法以包括标头参数。

1 个答案:

答案 0 :(得分:0)

这就像实现incidentID newcolumn1 newcolumn2 newcolumn3 <int> <fct> <fct> <fct> 1 1 A B NA 2 2 A NA NA 3 3 A B C 4 4 B C NA 一样简单。例如:

javax.ws.rs.container.ContainerRequestFilter

稍后,要优雅地处理此异常,只需为此@Provider public class ContentTypeValidatorFilter implements ContainerRequestFilter { @Override public void filter(ContainerRequestContext reqContext) { String contentType = getHeader(reqContext, "Content-Type"); // Content-type validation, but you can valid as many headers as you want. if (Objects.isNull(contentType)) { throw new InvalidRequestException("Content-Type header is missing"); } } private String getHeader(ContainerRequestContext requestContext, String header) { return requestContext.getHeaders().getFirst(header); } } 实现ExceptionMapper

以上过滤器将全局应用。但是,如果要排除某些端点,请使用InvalidRequestException来注释自定义注释,并将其仅应用于特定端点。