3-4用户创建请求

requestBody 映射请求体到Java方法的参数

测试用例

@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 注解时的测试效果


没加注解 @RequestBody 时的测试效果
加上注解 @RequestBody 时的测试效果

日期类型参数的处理

由于前后台分离,在处理日期类型的参数时,传时间戳就好,具体的显示由前后台各自决定
如:String content = "{\"username\":\"tom\",\"password\":null,\"birthday\":"+date.getTime()+"}";中的birthday传的值为date.getTime()

@valid注解和BindingResult验证请求参数的合法性并处理校验结果

设置password为非空
在调用 create 方法的时候要进行校验

上图的这种做法,如果不满足条件(password非空),方法直接不执行了
而有时候我们需要对某些情况进行处理,比如密码没填写,要记录下来,这种做法显然实现不了,这时候就需要BindingResult了


使用 BindingResult

使用 BindingResult 后的测试效果

也就是说,加了BindingResult,create方法带着错误信息进入到了方法,这个时候就可以进行相应的处理了

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容