一、前言
搭建springboot項目,我們都是采用的Restful接口,那么問題來了,當前端調用接口或者是其他項目調用時,我們不能單一靠調用方來控制參數的准確性,自己也要對一些非空的值進行判定。
二、方案
按照我們以往的做法,都是對request中的參數一個一個進行非空判定。
Model:
1 public class Order { 2 3 4 private Long userID; 5 6 7 private Long addressID; 8 9 private String comment; 10 11 }
Controller:
1 @PostMapping("/createOrders") 2 public String createOrders(@RequestBody Order dto) { 3 if(dto.getUserID==null) 4 return "userID不能為空"; 5 if(dto.getAddressID==null) 6 return "addressID不能為空"; 7 if(dto.getComment==null) 8 return "comment不能為空"; 9 return "sucess"; 10 }
這種做法首先是可取的,能達到我們的要求,但是這樣如果model字段過多,判定的就很多,相對維護起來就不是那么方便,其次增加controller層的負擔,既然我們來到spring4的時代,就應該適應使用注解的趨勢,下面是使用注解后的比變化。
Model:
public class Order { @NotNull(message = "用戶ID不能為空") private Long userID; @NotNull(message = "收貨人地址id不能為空") private Long addressID; @NotBlank(message = "備注不為空") private String comment; }
Controller:
@PostMapping("/createOrders") public String createOrders(@RequestBody @Valid Order dto, BindingResult results) { if (results.hasErrors()) return results.getFieldError().getDefaultMessage(); return "success"; }
這樣我們就只需要在model字段上加上非空驗證和相應提示語就好了。