南宁网站设计方法,深圳福田发现1例阳性,页面锚wordpress,一个网站策划需要多少钱valid 通过注解实现接口入参检查 前言一、引入依赖二、使用步骤1.创建入参对象 request2.提供一个接口 controller3.全局异常捕获 GlobalExceptionHandler4.执行结果 总结 前言
作为一个后端开发#xff0c;一般是不单独对接口参数的每个入参进行长度、最大值、最小值判断。 … valid 通过注解实现接口入参检查 前言一、引入依赖二、使用步骤1.创建入参对象 request2.提供一个接口 controller3.全局异常捕获 GlobalExceptionHandler4.执行结果 总结 前言
作为一个后端开发一般是不单独对接口参数的每个入参进行长度、最大值、最小值判断。 但是~~总会遇到要检查的时候比如说测试给我提了几个参数长度校验 bug1年龄输入 99999 没有合理性检查 bug2姓名输入 啧啧啧啧啧啧啧啧啧啧啧啧啧啧啧啧啧啧啧啧啧啧啧啧啧啧啧啧啧啧啧啧啧啧啧啧啧啧啧啧啧啧啧啧啧 没做长度校验~
遇到这种吧前端又不改只有后端来检查下咯。 一、引入依赖 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-validation/artifactId/dependency二、使用步骤
1.创建入参对象 request
代码如下示例
import lombok.Data;import javax.validation.constraints.Max;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;/*** author long_tao*/
Data
public class ValidOneRequest {NotNull(message 唯一键不能为空)private String uuid;Size(max 20, message name最大长度为20)private String name;NotNull(message 状态不能为空)private Boolean status;Max(value 200, message 年龄不能大于200)private Integer age;
}
2.提供一个接口 controller
代码如下示例
import com.example.demo.request.ValidOneRequest;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import javax.validation.Valid;/*** author lobster*/
RestController
RequestMapping(valid)
public class ValidController {PostMapping(value demo, name 使用注解实现入参字段长度校验、非空校验)public String validDemo(Valid RequestBody ValidOneRequest validOneRequest) {return success!;}
}3.全局异常捕获 GlobalExceptionHandler
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;import javax.servlet.http.HttpServletRequest;/*** author lobster* GlobalExceptionHandler中做了异常处理 所以一般情况下不需要再去手动捕获异常**/
Slf4j
RestControllerAdvice
public class GlobalExceptionHandler {/*** 请求接口入参校验*/ExceptionHandler(value MethodArgumentNotValidException.class)public String handleException400(HttpServletRequest req, MethodArgumentNotValidException e) {e.printStackTrace();BindingResult bindingResult e.getBindingResult();StringBuilder sb new StringBuilder();for (FieldError fieldError : bindingResult.getFieldErrors()) {sb.append(fieldError.getDefaultMessage()).append(,);}String errorMessage sb.toString();return errorMessage.substring(0, errorMessage.length() - 1);}4.执行结果 总结
综上所述可以针对接口的参数进行检查并返回指定错误信息 我返回的是字符串一般项目上返回的是对象如{“code”:500,“msg”:“XX字段超限\nXX字段超过最大值\n”}
希望每一个开发人员都能干到退休撒花~