1. 程式人生 > >前端參數統一校驗工具類ValidParamUtils

前端參數統一校驗工具類ValidParamUtils

abs val ams utils res 結果 muti bad trac

1,前端參數不可信,對於後端開發人員來說應該是一條鐵律,所以對於前端參數的校驗,必不可少,而統一的前端參數校驗工具,對我們進行參數校驗起到事半功倍的效果

2,統一參數校驗工具ValidParamUtils

public class ValidParamUtils {

    public static void validInputParams(BindingResult bindingResult) throws ParameterValidErrorException {
        if(bindingResult.hasErrors()) {
//如果對於字段的校驗出現錯誤,拋出統一自定義參數異常 String errorMessage
= ValidParamUtils.errorParamInfo(bindingResult); if (!StringUtils.isBlank(errorMessage)){ throw new ParameterValidErrorException(ErrorCode.BAD_REQUEST, errorMessage); } throw new ParameterValidErrorException(ErrorCode.BAD_REQUEST); } }
public static String errorParamInfo(BindingResult bindingResult) {
//從綁定結果中,獲取錯誤信息 FieldError fe
= bindingResult.getFieldError(); if(fe != null) { return fe.getDefaultMessage(); } ObjectError oe = bindingResult.getGlobalError();
if(oe != null) { return oe.getDefaultMessage(); } return ""; }

3,自定義參數異常

public abstract class ParamErrorException extends RuntimeException {

    /**
     *
     */
    private static final long serialVersionUID = 1L;
    private ErrorCode errorCode;

    public BaseException() {
    }

    public BaseException(ErrorCode errorCode) {
        super(errorCode.getName());
        this.errorCode = errorCode;
    }

    public BaseException(ErrorCode errorCode, String msg) {
        super(msg);
        this.errorCode = errorCode;
    }

    public ErrorCode getErrorCode() {
        return errorCode;
    }

    public void setErrorCode(ErrorCode errorCode) {
        this.errorCode = errorCode;
    }
}

4,使用自定義的統一參數校驗工具

 @PostMapping(value = "/manage/ads/theme/add")
    public Result addThemeActivity(@RequestBody @Validated(value = {AddOrUpdateThemeActivityRequest.AddThemeActivityGroup.class}) AddOrUpdateThemeActivityRequest addOrUpdateThemeActivityRequest, BindingResult bindingResult) {
        LOGGER.info("manage addThemeActivity param:{}", JSON.toJSONString(addOrUpdateThemeActivityRequest));
//參數校驗 ValidParamUtils.validInputParams(bindingResult); Integer themeActivityNum
= themeActivityService.selectThemeActivityByTitleAndId(addOrUpdateThemeActivityRequest.getTitle(), null); if (themeActivityNum > 0) { LOGGER.warn(String.format("%s. title:%s", ErrorCode.MANAGE_PROJECT_THEME_TITLE_EXIST.getName(), addOrUpdateThemeActivityRequest.getTitle())); return Result.builder().failed(ErrorCode.MANAGE_PROJECT_THEME_TITLE_EXIST).build(); } managerBannerService.insertThemeActivityInfo(addOrUpdateThemeActivityRequest); sendBizLog(addOrUpdateThemeActivityRequest.getTitle()); LOGGER.info("manage addThemeActivity success. "); return Result.builder().data("新增專題活動成功").success().build(); }

前端參數統一校驗工具類ValidParamUtils