首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Happy的分享

    【快学springboot】4.接口参数校验

    前言 在开发接口的时候,参数校验是必不可少的。参数的类型,长度等规则,在开发初期都应该由产品经理或者技术负责人等来约定。如果不对入参做校验,很有可能会因为一些不合法的参数而导致系统出现异常。 上一篇文章讲了多种接受参数的方法【快学springboot】3.多种接受参数的方式。因为目前json类型的参数是最常用的,所以这里只讲解json类型的参数校验。其他类型的大同小异。 使用Validated注解开启参数校验 @PostMapping(value = "/validate/notblank") public Object validateNotBlank(@RequestBody @Email private String email; 复制代码 image.png Pattern 注解校验正则表达式 @Pattern(regexp = "\d{4}-\d{2}-\d{2} 参数校验,往往需要和全局的异常拦截器来配套使用,使得返回的数据结构永远是保持一致的,这样才能方便客户端解释。 下一节会对统一返回格式和全局异常拦截器做一个讲解。

    90831发布于 2019-07-16
  • 来自专栏Happy的分享

    【快学springboot】4.接口参数校验

    前言 在开发接口的时候,参数校验是必不可少的。参数的类型,长度等规则,在开发初期都应该由产品经理或者技术负责人等来约定。如果不对入参做校验,很有可能会因为一些不合法的参数而导致系统出现异常。 上一篇文章讲了多种接受参数的方法【快学springboot】3.多种接受参数的方式。因为目前json类型的参数是最常用的,所以这里只讲解json类型的参数校验。其他类型的大同小异。 @Email private String email; Pattern 注解校验正则表达式 @Pattern(regexp = "\d{4}-\d{2}-\d{2}") private String birthday; 总结 以上总结了部分常用的参数校验的方法,当然还有很详细的一些没有列举处理,有需要的,可以自行搜索使用方式即可。 参数校验,往往需要和全局的异常拦截器来配套使用,使得返回的数据结构永远是保持一致的,这样才能方便客户端解释。 下一节会对统一返回格式和全局异常拦截器做一个讲解。

    37710编辑于 2024-01-26
  • 来自专栏后端沉思录

    参数校验

    最近开发中遇到一个问题,需要对请求的参数进行校验,包括身份证号、手机号、是否是数字、是否是整型数字、年龄、性别的校验,由于Controller层接受参数类型是JSONObject,所以需要考虑使用其他方法解决这个问题 ,前提排除解析后再通过条件语句去判断,这样不但使代码冗余而且使未来的字段扩充或校验变的麻烦。 定义校验类注解 4. 定义实体 5. 然后在切面中具体操作 校验注解类: ? 实体: ? 由于实体类较多,这里不再贴出详细的代码了。 切面中具体代码: ? 上面的核心代码是check方法,利用递归的方式可以遍历所有的属性,dispatcher方法会根据注解类分发调用对应的校验方法。

    1.5K20发布于 2018-10-29
  • 来自专栏Howl同学的学习笔记

    SpringMVC参数校验

    参数校验 我们在做Web层的时候,接收了各种参数,尽管前端已经做了验证,但难免恶意传参,所以要对传过来的数据保持不信任的态度来进行参数校验 笔者日常进行验证的方式如下: @RequestMapping( ,一个类中参数校验的代码就占了大部分,得不偿失 这时候就该考虑简便的参数校验方式了——JSR-303(基于注解) 2. Spring也提供了参数校验的方式,即实现其内部的validator接口来进行参数校验,接口有两个方法: public class UserValidator implements Validator 在Controller方法入参中需要校验参数前加入@Validated()表明需要校验,后方要加@BindingResult接收错误信息,若没加即接收不了错误信息会报错(若使用了全局异常处理则可以不加 ,这里笔者就不做 (tou) 说明 (lan) 了 4.

    1.4K10发布于 2020-03-10
  • 来自专栏LongJava学习资料

    _SpringBoot参数校验

    SpringBoot自带了validation工具可以从后端对前端传来的参数进行校验,用法如下:首先得添加依赖 <! -- 参数校验 --> <dependency>           <groupId>org.springframework.boot</groupId>           <artifactId public String t1(@NotBlank String name){ System.out.println(name); return name; }}在要开启参数校验的类上方添加 Validated注解,代表该类开启参数校验,访问http://localhost:8080/t1,发现当没有传来参数时,会抛出 ConstraintViolationException 异常。  3.2 测试结果OK,接下来我们测试一下什么都没有输入,直接测试接下来输入如下图四、对象类型参数校验SpringBoot也可以校验对象参数中的每个属性,用法如下:4.1 添加实体类package com.example.springbootdemo4

    42720编辑于 2023-11-16
  • 来自专栏从零开始学自动化测试

    FastAPI学习-4.get 请求 query params 参数校验

    前言 get请求在接收参数的时候,需校验用户传过来的参数是否合法 查询参数和字符串校验 FastAPI 允许你为参数声明额外的信息和校验。 额外的校验 我们打算添加约束条件:即使 q 是可选的,但只要提供了该参数,则该参数值不能超过50个字符的长度。 在本例中,适用于字符串的 max_length 参数: q: str = Query(None, max_length=50) 将会校验数据,在数据无效时展示清晰的错误信息,并在 OpenAPI 模式的路径操作中记录该参数 当我们不需要声明额外的校验或元数据时,只需不声明默认值就可以使 q 参数成为必需参数,例如:q: str代替:q: str = None 但是现在我们正在用 Query 声明它,例如: q: str str 值的校验

    1.7K20编辑于 2022-03-03
  • 来自专栏CBeann的博客

    Spring Boot 参数校验

    校验实践 前提 SpringBoot+web 添加依赖 <dependency> <groupId>org.springframework.boot</groupId> 如上图所示,默认会校验完所有属性,然后将错误信息一起返回,但很多时候不需要这样,一个校验失败了,其它就不必校验了 package com.example.springbootvalidator.config 前提 上面的 校验实践 的基础之上进行 需求 验证sex性别参数是否合法,添加自己定义的校验注解进行校验 实践 自定义的属性注解 package com.example.springbootvalidator.myvalidator public @interface SexAnnotation { String message() default "sex参数错误"; //下面这两个属性必须添加 Class list.toString(); } 测试 参考 Spring Boot之Validation自定义实现总结_木小鱼的笔记-CSDN博客_validation 自定义 快速入手 Spring Boot 参数校验

    44210编辑于 2023-12-25
  • 来自专栏码匠的流水账

    聊聊webflux参数校验

    序 本文主要研究下webflux如何进行参数校验 使用javax.validation domain import javax.validation.constraints.Min; import javax.validation.constraints.NotEmpty validateRawReqBody(@RequestBody @Validated User user /**,BindingResult bindingResult**/) { //注意在参数添加 javax.validation虽然是方便,但是具体业务场景非常复杂,不是简单的单个字段校验就完事的,有的需要关联校验,这个时候javax.validation就无能为力了。 这个时候可能就需要手工来写校验。 Mono.error手工校验,基本可以处理大多数webflux参数校验场景。

    2.5K21发布于 2018-09-17
  • 来自专栏九陌斋

    FastAPI从入门到实战(4)——路径参数与数值校验

    return {"message":parameters} 这个例子中,parameters被声明为str类型; 如果不是规定类型,就会报错,这也就是fastapi的数据校验功能的先进之处; int = Path(..., title="你要传的数字", description="不可描述", ge=1, le=10), ): return number 上面代码传入number参数并进行校验 将其标记为必需参数。即使使用 None 声明路径参数或设置一个其他默认值也不会有任何影响,它依然会是必需参数。 元数据 title:指定参数的标题,用做提示 description:参数描述 alias:别名参数 这里有个坑,要是不清楚alias的作用,入坑可能性太大了,如下: 直接请求的话,就会报 数值校验 gt:大于(greater than) ge:大于等于(greater than or equal) lt:小于(less than) le:小于等于(less than or equal

    1K10编辑于 2022-12-27
  • 来自专栏吟风者

    Spring Boot 参数校验

    String url; @Pattern(regexp = "^1[3|4|5|7|8][0-9]{9}$", message = "正则校验是否为正确的手机号") private lang = "javascript", script = "_this.startDate.before(_this.endDate)", message = "通过脚本表达式校验参数 针对 POST 和 PUT 请求,一般通过新建域(对象)模型来进行数据绑定和校验,constraint 通常附加在这些域模型的字段上(如上): /** * Valid注解标明要对参数对象进行数据校验 默认情况下,Hibernate Validator 只能对 Object 属性进行校验,并不能对单个参数进行校验,Spring 在此基础上进行了扩展,通过配置 MethodValidationPostProcessor 处理器,可以实现对方法参数的拦截校验

    2.5K21发布于 2019-08-20
  • 来自专栏索码理

    初探Springboot 参数校验

    注解 JSR-303 提供了一系列注解,用于在Java中进行数据校验。这些注解主要用于对实体类的属性进行约束,以确保数据的有效性。 ) public UserBean getUserBean(@Validated UserBean userBean) { return userBean; } } 4. 封装全局异常处理类 @RestControllerAdvice public class GlobalExceptionHandler { /** * 参数校检异常 * 再次测试 再次测试可以看到在响应结果中得到了我们想要的结果了,至此Springboot参数校验入门就完成了。 总结 Springboot 参数校验在实际工作中用处非常大,本文只是简单介绍一下有哪些注解和简单使用,后续会对Springboot参数校验做一个详细的介绍和使用,感兴趣可以关注一下。

    62111编辑于 2024-03-04
  • 来自专栏pandacode_cn

    Java 参数校验(Validator)

    # Java 参数校验(Validator) 应用在执行业务逻辑之前,必须通过校验保证接受到的输入数据是合法正确的,但很多时候同样的校验出现了多次,在不同的层,不同的方法上,导致代码冗余,浪费时间,违反 每一个控制器都要校验 过多的校验参数会导致代码太长 代码的复用率太差,同样的代码如果出现多次,在业务越来越复杂的情况下,维护成本呈指数上升。 可以考虑把校验的代码封装起来,来解决出现的这些问题。 要校验参数前,加上@Valid注解 // 2. ) { return "OK"; } # 二、直接校验参数 @Controller @Validated @RequestMapping(value = "validator" // 自定义注解一定要实现ConstraintValidator接口奥,里面的两个参数 // 第一个为 具体要校验的注解 // 第二个为 校验参数类型 public class IsMobileValidator

    1.9K20编辑于 2021-12-17
  • 来自专栏山行AI

    springboot validation参数校验

    public R save(@CurrentUser@ApiIgnore SysUser sysUser, @RequestBody @Valid Medicine medicine) { 4. 在运行时,Bean Validation 框架本身会根据被注释元素的类型来选择合适的 constraint validator 对数据进行验证 BindingResult必须跟在被校验参数之后,若被校验参数之后没有 而正是这个差异导致了BindingResult无法接受到简单对象(简单的入参参数类型)的校验信息。 ModelAttributeMethodProcessor#resolveArgument():154 行的 validateIfApplicable(binder, parameter)语句,进行了参数校验 WebDataBinder binder = binderFactory.createBinder(webRequest, attribute, name); // 参数校验

    4.1K41发布于 2019-08-26
  • 来自专栏Lambda

    Springboot @Validated参数校验

    ,在Controller层一定要做参数校验的! 下面我们简单介绍下requestBody和requestParam/PathVariable的参数校验实战! requestBody参数校验 POST、PUT请求一般会使用requestBody传递参数,这种情况下,后端使用DTO对象进行接收。只要给DTO对象加上@Validated注解就能实现自动参数校验。 还有就是嵌套集合校验会对集合里面的每一项都进行校验,例如List<Job>字段会对这个list里面的每一个Job对象都进行校验 集合校验 如果请求体直接传递了json数组给后台,并希望对数组中的每一项都进行参数校验 方法级别的参数校验实现原理 上面提到的将参数一个个平铺到方法参数中,然后在每个参数前面声明约束注解的校验方式,就是方法级别的参数校验

    1.8K20编辑于 2022-10-04
  • 来自专栏用户9378957的专栏

    更简洁的参数校验,使用 SpringBoot Validation 对参数进行校验

    今天,推荐一种更简洁的写法,使用 SpringBoot Validation 对方法参数进行校验,特别是在编写 Controller 层的方法时,直接使用一个注解即可完成参数校验。 --可以完成参数校验功能--> <! ; @NotBlank(message = "名字不能为空") @Size(min=2, max = 4, message = "名字字符长度必须为 2~4个") private ,会抛出异常 MethodArgumentNotValidException,同时也会打印那些参数没有通过校验,以及该参数校验规则。 : 参数 score = -20 校验错误:需要在0和9223372036854775807之间复制代码 传递校验我们也可以使用传递校验,即一个参数类中包含了另一个参数类,被包含的参数类也可以被校验

    11.2K54编辑于 2023-01-09
  • 来自专栏JAVA核心

    详解java参数校验之:顺序校验、自定义校验、分组校验(@Validated @GroupSequence)

    当将 MethodValidationPostProcessor 添加到 Spring 容器中时,它会自动拦截标注了 @Validated 注解的方法,并在方法调用之前执行参数校验操作。 使用 MethodValidationPostProcessor 可以方便地在方法级别上实现参数校验,而无需显式调用 Validator 对象进行验证。 如果校验失败,则会抛出相应的异常。 总而言之,MethodValidationPostProcessor 是一个后置处理器,用于实现方法参数校验。 @Autowired private Validator validator; 接下来,在方法中手动调用 validator.validate() 方法进行参数校验。 通过手动调用 validator.validate() 方法,可以实现对对象的参数校验,并且可以通过检查 ConstraintViolation 集合来处理校验失败的情况。

    2.7K10编辑于 2024-03-21
  • 来自专栏Michael阿明学习之路

    fastapi 查询参数和字符串校验 路径参数和数值校验

    必须参数 3. 查询参数列表 / 多个值 4. 声明更多元数据 5. 别名参数 6. 弃用参数 7. Path 路径参数 8. q: list = Query(["mike","jason"]) 4. 别名参数 你需要在浏览器里使用 参数 item-good,但是 python 不支持 - 作为变量名 q: Optional[str] = Query(None, alias = "item-good" 弃用参数参数 deprecated=True 传入 Query 7. 按需对参数排序 fastapi 会自动根据 参数的名称、类型和默认值声明(Query、Path 等)来检测参数 from fastapi import Path @app.get("/items/{item_id

    1.6K20编辑于 2022-01-07
  • 来自专栏allsmallpi博客

    spring注解式参数校验

    bean上加注解验证 @NotBlank private String name; 5.自定义全局异常捕获异常 因为我自定义的validator类校验缺少参数直接抛出异常,所以需要自定义全局异常捕获到这个异常 ,然后返回给前端 : 缺少必要参数。  private int scale;//基础规格 3.验证List不为空 @NotEmpty private List userList; 4.对象内包含List<对象>的校验 @Valid @NotEmpty private List userList; 这样即可以实现对list里面的对象的校验了 ---- 规则: @AssertFalse Boolean,boolean 验证注解的元素值是false 如果想在验证用户对象时一起验证地址对象的话,在地址对象上加@Valid注解即可级联验证 ---- 参考: http://jinnianshilongnian.iteye.com/blog/1733708:Spring参数验证

    1.1K10发布于 2021-02-25
  • 来自专栏军军不吃鸡

    java常用注解校验参数

    验证注解的元素值不为空(包括不为null或去除首位空格后长度为0) @NotEmpty 被注释的对象必须不为空(数据:String,Collection,Map,arrays) @Valid 递归的对关联对象进行校验 , 如果关联对象是个集合或者数组, 那么对其中的元素进行递归校验,如果是一个map,则对其中的值部分进行校验 hibernate validator 附加的 constraints 注解 描述 @Length

    2.2K20编辑于 2022-10-26
  • 来自专栏Vincent-yuan

    Spring Boot参数校验以及分组校验的使用

    一 前言 做web开发有一点很烦人就是要对前端输入参数进行校验,基本上每个接口都要对参数进行校验,比如一些非空校验、格式校验等。 具体来说分为单参数校验、对象参数校验,单参数校验就是controller接口按照单参数接收前端传值,没有封装对象进行接收,如果有封装对象那就是对象参数校验。 ("/user") @Validated // 单参数校验需要加的注解 public class UserController { // do something } 2 对象参数校验 对象参数校验使用时 result.setMessage(msg); } return result; } 转自: https://mp.weixin.qq.com/s/x6_mNdtb6i2XmTiyz4kXrg 具体来说分为单参数校验、对象参数校验,单参数校验就是controller接口按照单参数接收前端传值,没有封装对象进行接收,如果有封装对象那就是对象参数校验

    2K30发布于 2021-08-12
领券