美文网首页
3-4用户创建请求

3-4用户创建请求

作者: 唯有口袋里的钱能给我安全感 | 来源:发表于2018-05-16 17:21 被阅读11次

    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方法带着错误信息进入到了方法,这个时候就可以进行相应的处理了

    相关文章

      网友评论

          本文标题:3-4用户创建请求

          本文链接:https://www.haomeiwen.com/subject/bhzpdftx.html