API接口參數校驗

Controller層代碼

@PostMapping(value = "/message") // http://localhost/message
	ResponseEntity<String> post(@RequestBody ApiRequ apiRequ) {
		ValidationResult result = ValidationUtils.validateEntity(apiRequ);
	        boolean isError = result.isHasErrors();
	        System.out.println(result.getErrorMsg().toString());
		return new ResponseEntity<>(JSONObject.toJSONString(apiResp), HttpStatus.OK);
}

通過@RequsetBody接收到 apiRequ數據後,進行apiRequ內參數校驗。首先需要在apiRequ實體類中添加註解

@NotNull:不能为null,但可以为empty(""," “,” “)
@NotEmpty:不能为null,而且长度必须大于0 (” “,” ")
@NotBlank:只能作用在String上,不能为null,而且调用trim()后,长度必须大于0(“test”) 即:必须有实际字符
…可自行百度

上述三個註解需要引入的Maven依賴

<dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
            <version>1.1.0.Final</version>
        </dependency>
        <!-- hibernate validator-->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>5.2.0.Final</version>
        </dependency>

參數校驗單元所需代碼

校驗結果實體類

public class ValidationResult implements Serializable{
	private static final long serialVersionUID = 1L;
	private boolean hasErrors;
    private StringBuffer errorMsg;
}

校驗方法

import java.util.Set;
 
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.groups.Default;
 
/**
 * 校验工具类
 * 
 */
public class ValidationUtils {
 
    private static Validator validator = Validation.buildDefaultValidatorFactory().getValidator();
 
    public static <T> ValidationResult validateEntity(T obj) {
        ValidationResult result = new ValidationResult();
        Set<ConstraintViolation<T>> set = validator.validate(obj, Default.class);
        if (set != null && set.size() != 0) {
            result.setHasErrors(true);
            StringBuffer errorMsg = new StringBuffer();
            for (ConstraintViolation<T> cv : set) {
            	errorMsg.append(cv.getMessage());
            }
            result.setErrorMsg(errorMsg);
        }
        return result;
    }

}

需要注意的是 apiRequ 實體類中的註解需要在@Null 後添加message,例如:

@NotBlank(message = "source_system can not be null or empty. ")
	public String source_system;

這樣在該字段為空時,檢查結果才能報錯 'source_system can not be null or empty. ’

以上內容如有誤,感謝指正。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值