写一个必传参数校验工具类

参数校验有

javax.validation

可以网上查找,通过注解可以方便实现参数校验,下面的工具类自己写着玩,可以自己封装成注解形式

需要依赖:

1.(使用alibab的fastjson也可以,需要配置一下默认不去掉null键值对,这次用下面这个jackson依赖)

2.apache工具包

        <dependency>
            <groupId>com.fasterxml.jackson.datatype</groupId>
            <artifactId>jackson-datatype-guava</artifactId>
            <version>2.10.1</version>
        </dependency>

        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.6</version>
        </dependency>

代码:MustParamsIsNullOrNotUtil:

package com.ns.restaurant.util;

import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.exc.InvalidFormatException;
import com.ns.restaurant.pojo.enums.ResponseCode;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.http.converter.HttpMessageNotReadableException;

import java.util.Map;

/**
 * @ClassName:MustParamsIsNullOrNotUtil
 * @Package:com.ns.restaurant.util
 * @Description: com.ns.restaurant.util.MustParamsIsNullOrNotUtil: 校验必填参数工具类
 * FIXME 使用方法: 例如:public TrunkResult testCatchingException(@RequestBody  TestBo testBo) {  }
 * FIXME 参数实体类  testBo  中的必填参数字段名必须包含字段 must e.g.  private String mustParam1;
 * FIXME 在要校验的地方调用本工具类中的MustParamsIsNullOrNot方法 ,传入要校验的实体类 e.g. testBo ↑
 * FIXME 示例:    @PostMapping("/testCatchingException")
 *                 public TrunkResult testCatchingException(@RequestBody  TestBo testBo) {
 *                      TrunkResult trunkResult = MustParamsIsNullOrNotUtil.MustParamsIsNullOrNot(testBo);
 *                      if(ObjectUtils.isEmpty(trunkResult.getMsg())){
 *                          // 自己的行为逻辑
 *                          return  TrunkResult.ok();
 *                      }
 *                      return  trunkResult;
 *                  }
 *        调用示例:POST http://localhost:8866/dingding/testCatchingException
 *          Content-Type: application/json
 *          {
 *              "mustParam1": "bb",
 *              "mustParam2": "aa",
 *              "mustParam4": "9"
 *          }
 *        调用结果 :
 *          {
 *             "status": 400,
 *             "msg": "mustParam3必填!",
 *             "data": null
 *           }
 * @date:2021/11/4 9:57
 * @author:南风
 */
@Slf4j
public class MustParamsIsNullOrNotUtil {
    private static final String MUSTPERIOD = "must";

    public static TrunkResult MustParamsIsNullOrNot(Object obj){
        ObjectMapper mapper = new ObjectMapper();
        String jsonStr;
        try {
            jsonStr = mapper.writeValueAsString(obj);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
            return TrunkResult.errorMsg(ResponseCode.INTERNAL_SERVER_ERROR);
        }
        TrunkResult trunkResult = new TrunkResult();
        Map<String,Object> parameterMap = JSONObject.parseObject(jsonStr, Map.class);
        for(String key:parameterMap.keySet()){
            if(key.contains(MUSTPERIOD) ){
                try {
                    if( StringUtils.isEmpty(parameterMap.get(key).toString())){
                        TrunkResult trunkResultError = new TrunkResult(400, key + "必填!",null);
                        return  trunkResultError;
                    }
                } catch (NullPointerException e) {
                    TrunkResult trunkResultCatched = new TrunkResult(400,key + "必填!",null);
                    return  trunkResultCatched;
                }
            }
        }
       return trunkResult;
    }
}

上面是工具类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值