requestBody 映射請(qǐng)求體到Java方法的參數(shù)
測(cè)試用例
@Test
public void whenCreateSuccess() throws Exception {
Date date = new Date();
System.out.println(date.getTime());
String content = "{\"username\":\"tom\",\"password\":null,\"birthday\":"+date.getTime()+"}";
String reuslt = mockMvc.perform(post("/user").contentType(MediaType.APPLICATION_JSON_UTF8)
.content(content))
.andExpect(status().isOk())
.andExpect(jsonPath("$.id").value("1"))
.andReturn().getResponse().getContentAsString();
System.out.println(reuslt);
}
UserController的 create 方法
@PostMapping("/user")
public User create(@RequestBody User user){
user.setId("1");
return user;
}
沒加 @requestBody 注解時(shí)的測(cè)試效果
沒加注解 @RequestBody 時(shí)的測(cè)試效果
加上注解 @RequestBody 時(shí)的測(cè)試效果
日期類型參數(shù)的處理
由于前后臺(tái)分離,在處理日期類型的參數(shù)時(shí),傳時(shí)間戳就好继薛,具體的顯示由前后臺(tái)各自決定
如:String content = "{\"username\":\"tom\",\"password\":null,\"birthday\":"+date.getTime()+"}";
中的birthday傳的值為date.getTime()
@valid注解和BindingResult驗(yàn)證請(qǐng)求參數(shù)的合法性并處理校驗(yàn)結(jié)果
設(shè)置password為非空
在調(diào)用 create 方法的時(shí)候要進(jìn)行校驗(yàn)
上圖的這種做法,如果不滿足條件(password非空),方法直接不執(zhí)行了
而有時(shí)候我們需要對(duì)某些情況進(jìn)行處理,比如密碼沒填寫,要記錄下來,這種做法顯然實(shí)現(xiàn)不了,這時(shí)候就需要BindingResult了
使用 BindingResult
使用 BindingResult 后的測(cè)試效果
也就是說,加了BindingResult咒精,create方法帶著錯(cuò)誤信息進(jìn)入到了方法隶校,這個(gè)時(shí)候就可以進(jìn)行相應(yīng)的處理了