JAX-RS 2.0如何验证查询参数

简介: 版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/72935228 JAX-RS 2.0如何验证查询参数版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/72935228

JAX-RS 2.0如何验证查询参数

  • 版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。

在JAX-RS 2.0规范中,要验证查询参数并不难,可以通过过滤器ContainerRequestFilter来实现。它还提供了一些可选项,例如使用CDI或EJB的拦截器,或通过@Context注解的HttpServletRequest进行注入。

使用场景:验证由调用者传递的查询参数

步骤:

  1. 实现过滤器
  2. 从ContainerRequestContext上下文中提取查询参数
  3. 执行验证——以适合的响应状态(和错误消息)中止请求

    @Provider
    @QueryParamValidator
    public class JAXRSReqFilter implements ContainerRequestFilter {
    @Override
    public void filter(ContainerRequestContext requestContext) throws IOException {
    MultivaluedMap < String, String > queryParameters = requestContext.getUriInfo().getQueryParameters();
    String queryParam = queryParameters.keySet().stream().findFirst().get();
    System.out.println(“Query param - ” + queryParam);
    if (!queryParam.equals(“p”)) {
    requestContext.abortWith(Response
    .status(Response.Status.BAD_REQUEST)
    .entity(“Invalid Query Param ” + queryParam)
    .build());
    }
    }
    }

强制过滤器

  • 使用@NameBinding注解来修饰自定义的注解
  • 在JAX-RS的方法上使用自定义的注解

    @NameBinding
    @Retention(RetentionPolicy.RUNTIME)
    @Target({ElementType.TYPE, ElementType.METHOD})
    public @interface QueryParamValidator {
    // do something
    }

    @Path(“test”)
    public class TestResource {
    @GET
    @QueryParamValidator
    public String test(@QueryParam(“p”) String p){
    return “Param “+ p + ” on ” + new Date();
    }
    }

目录
相关文章
|
SQL Oracle 关系型数据库
【问题处理】—— SQL里进行 null值 的判断永远返回 false?
【问题处理】—— SQL里进行 null值 的判断永远返回 false?
131 0
【Express】—get根据不同的参数返回不同的数据
【Express】—get根据不同的参数返回不同的数据
|
JSON 前端开发 数据可视化
php无法返回标准JSON格式:导致的$.ajax返回的数据无法执行success的解决方案
php无法返回标准JSON格式:导致的$.ajax返回的数据无法执行success的解决方案
120 0
|
机器学习/深度学习 PyTorch 算法框架/工具
打印一个torch网络的所有参数和参数名
在这个示例中,我们首先创建了一个张量x,然后使用clone()方法创建了一个副本张量y。我们修改副本张量的第一个元素的值,并打印原始张量和副本张量的值,可以看到它们的值分别是[1, 2, 3]和[0, 2, 3]。这说明对副本张量的修改不会影响原始张量。
1093 0
|
机器学习/深度学习 算法 关系型数据库
Julia:Flux.jl 中的网络更新优化器参数解释
Julia 是一个十分年轻的语言,通过预编译的方式能够将速度提高很多,有 C++ 的速度,解释性语言的特性,十分适合做数学分析和科学计算的工作。Flux.jl 是 Julia 用于做机器学习和深度学习的工具,这篇文章对文档中的不同优化器做一个翻译和总结,供参考。
248 0
|
PHP
tp自动验证流程和返回空数组的问题
tp自动验证流程和返回空数组的问题
129 0
|
Python
FastApi-07-查询参数校验
FastApi-07-查询参数校验
280 0
|
JSON 前端开发 数据格式
fastapi(65)- 路由函数指定了 response_model,在返回自定义 JSONResponse 时, 不会限制它返回的数据结构
fastapi(65)- 路由函数指定了 response_model,在返回自定义 JSONResponse 时, 不会限制它返回的数据结构
375 0
fastapi(65)- 路由函数指定了 response_model,在返回自定义 JSONResponse 时, 不会限制它返回的数据结构
|
前端开发
【TP5.1】ES6 ajax返回字符串拼接
【TP5.1】ES6 ajax返回字符串拼接
144 0
【TP5.1】ES6 ajax返回字符串拼接
|
Python
fastapi 查询参数和字符串校验 / 路径参数和数值校验
fastapi 查询参数和字符串校验 / 路径参数和数值校验
323 0
fastapi 查询参数和字符串校验 / 路径参数和数值校验

热门文章

最新文章