美文网首页
springboot验证注解

springboot验证注解

作者: 盗生一 | 来源:发表于2020-08-26 17:26 被阅读0次

    springboot 使用验证注解:需要引入spring-boot-starter-validation(使用Hibernate Validator 框架提供验证功能) 依赖进行参数校验

    • 要验证的pojo 配置
    package com.hjkj.facecomparison.person;
    
    import javax.validation.constraints.NotBlank;
    
    /**
     * 比对对象
     */
    public class Person {
        @NotBlank(message = "待核验用户姓名不可为空")
        private String nameText;
        @NotBlank(message = "待核验用户身份证号不可为空")
        private String numberText;
        @NotBlank(message = "待核验用户现场照片不可为空")
        private String idPhoto;
    
        public String getNameText() {
            return nameText;
        }
    
        public void setNameText(String nameText) {
            this.nameText = nameText;
        }
    
        public String getNumberText() {
            return numberText;
        }
    
        public void setNumberText(String numberText) {
            this.numberText = numberText;
        }
    
        public String getIdPhoto() {
            return idPhoto;
        }
    
        public void setIdPhoto(String idPhoto) {
            this.idPhoto = idPhoto;
        }
    
        @Override
        public String toString() {
            return "Person{" +
                    "nameText='" + nameText + '\'' +
                    ", numberText='" + numberText + '\'' +
                    ", idPhoto='" + idPhoto + '\'' +
                    '}';
        }
    }
    
    
    • controller 配置
    /**
     * 人脸比对处理类
     */
    package com.hjkj.facecomparison.controller;
    
    
    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.JSONObject;
    import com.hjkj.facecomparison.common.ResponseResult;
    import com.hjkj.facecomparison.person.Person;
    import com.hjkj.facecomparison.utils.HttpConnectionUtil;
    import com.pinecone.utils.EncryptionUtils;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestBody;
    import org.springframework.web.bind.annotation.ResponseBody;
    import org.springframework.web.bind.annotation.RestController;
    
    import javax.validation.Valid;
    
    
    /**
     * 人脸比对处理类
     */
    @RestController
    public class FaceComparisonController {
    
        @Value("${sm4Key}")
        private String sm4Key;
        @Value("${requestUrl}")
        private String requestUrl;
        @Value("${clientCode}")
        private String clientCode;
    
        /**
         * 获取比对结果
         *
         * @param person {"nameText":"",numberText:"",idPhoto:""}
         * @return json
         */
        @PostMapping(value = "/comparisonResult")
        @ResponseBody
        public ResponseResult faceComparisonResult(@RequestBody @Valid Person person) throws Exception {
            JSONObject source = new JSONObject();
            source.put("clientCode", clientCode);
            source.put("encryptString", EncryptionUtils.encryptSM4(sm4Key, JSON.toJSONString(person)));
            // return HttpConnectionUtil.doPost(requestUrl, source.toString());
            JSONObject jsonObject = JSON.parseObject(HttpConnectionUtil.doPost(requestUrl, source.toString()));
            String result = jsonObject.getString("result");
            if (result != null && result.equals("-1")) {
                return ResponseResult.error(result, jsonObject.getString("errCode"),
                        jsonObject.getString("resultDetail"), "比对失败");
            }
            return ResponseResult.success(jsonObject.getString("result"), jsonObject.getString("similarity"), jsonObject.getString("resultDetail"));
    
        }
    
    }
    
    
    
    • 验证异常处理
    package com.hjkj.facecomparison.exception
    import com.hjkj.facecomparison.common.ResponseResult;
    import com.hjkj.facecomparison.common.ResponseStatuses;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.validation.BindingResult;
    import org.springframework.validation.FieldError;
    import org.springframework.web.bind.MethodArgumentNotValidException;
    import org.springframework.web.bind.annotation.*;
    /**
     * 全局异常处理类
     *
     * @author Jack
     */
    @ControllerAdvice
    public class GlobalExceptionHandler {
    
        private static final Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class);
        /**
         * 校验对象参数异常
         * @param ex
         */
        @ExceptionHandler(MethodArgumentNotValidException.class)
        @ResponseBody
        public ResponseResult validExceptionHandler(MethodArgumentNotValidException ex) {
            BindingResult bindingResult = ex.getBindingResult();
            StringBuffer stringBuffer = new StringBuffer();
            if (bindingResult.hasErrors()) {
                for (FieldError fieldError : bindingResult.getFieldErrors()) {
                    //该格式仅仅作为response展示和log作用,前端应自己做校验
                    stringBuffer.append(fieldError.getDefaultMessage() + " ");
                }
            }
            log.error(stringBuffer.toString());
            return ResponseResult.error(ResponseStatuses.ERROR_PARAMS_NOT_IS_BLANK.getCode(),stringBuffer.toString());
        }
    
    • 高复应响应对象
    package com.hjkj.facecomparison.common;
    
    
    public class ResponseResult {
        private String errCode;
        private String result;
        private String resultDetail;
        private String similarity;
    
    
        public ResponseResult(String result, String resultDetail, String similarity) {
            this.result = result;
            this.resultDetail = resultDetail;
            this.similarity = similarity;
        }
    
        public ResponseResult(String errCode, String result, String resultDetail, String similarity) {
            this.errCode = errCode;
            this.result = result;
            this.resultDetail = resultDetail;
            this.similarity = similarity;
        }
        public ResponseResult(String result, String resultDetail) {
            this.result = result;
            this.resultDetail = resultDetail;
        }
    
        public static ResponseResult success(String result, String similarity, String resultDetail) {
            return  new ResponseResult(result, similarity, resultDetail);
        }
    
        public static ResponseResult error(String result, String errCode, String resultDetail, String similarity){
            return new ResponseResult( errCode,result, resultDetail,similarity);
        }
    
        public static ResponseResult errorException(String result, String resultDetail){
            return new ResponseResult( result, resultDetail);
        }
    
        public String getSimilarity() {
            return similarity;
        }
    
        public void setSimilarity(String similarity) {
            this.similarity = similarity;
        }
    
        public String getErrCode() {
            return errCode;
        }
    
        public void setErrCode(String errCode) {
            this.errCode = errCode;
        }
    
        public String getResult() {
            return result;
        }
    
        public void setResult(String result) {
            this.result = result;
        }
    
        public String getResultDetail() {
            return resultDetail;
        }
    
        public void setResultDetail(String resultDetail) {
            this.resultDetail = resultDetail;
        }
    }
    
    

    相关文章

      网友评论

          本文标题:springboot验证注解

          本文链接:https://www.haomeiwen.com/subject/uxnxsktx.html