美文网首页
传递json数据有没有必要用RequestBody?

传递json数据有没有必要用RequestBody?

作者: 看山看海看你 | 来源:发表于2018-12-28 09:14 被阅读0次

    1、传递json数据有没有必要用RequestBody?

    在使用SpringMVC的时候自己一直避免使用RequestBody,因为觉的它在参数处理的时候不够方便。
    理由如下:
    1.不使用RequestBody时是这样的:
    前端参数可以直接使用JSON对象:

    //此时请求的ContentType默认是application/x-www-form-urlencoded:
    var user= {
                    "username" : username,
                    "password" : password,
                    "rememberMe":rememberMe
              };
    $.ajax({
        url : "http://...../jsontest.do",
        type : "POST",
        async : true,
        data : user,
        dataType : 'json',
        success : function(data) {
        }
    });
    

    后端参数的写法也很灵活:

    @RequestMapping("/jsontest.do")
    public void test(User user,String username,String password,Boolean rememberMe){
        System.out.println(user);
        System.out.println("username: " + username);
        System.out.println("password: " + password);
        System.out.println("rememberMe: " + rememberMe);
        
    }
    

    2.而使用RequestBody是这样的:s
    前端使用application/json的时候,必须要将JSON对象转换为JSON字符串

    //需要使用JSON.stringify()将JSON对象转化为JSON字符串
    var user= {
                    "username" : username,
                    "password" : password
              };
    $.ajax({
            url : "http://...../jsontest.do",
            type : "POST",
            async : true,
            contentType: "application/json; charset=utf-8",
            data : JSON.stringify(user),
            dataType : 'json',
            success : function(data) {
            }
     });
    

    后端参数的用法也不灵活:/这种方式下所有的参数都只能封装在User对象中,不能单独设置参数

    @RequestMapping("/jsontest")
    public void test(@RequestBody User user  ){
        String username = user.getUsername();
        String password = user.getPassword();
    }
    
    或者
    
    @RequestMapping("/jsontest")
    public void test(@RequestBody Map map  ){
        String username = map.get("username").toString();
        String password = map.get("password").toString();
    }
    
    或者
    
     public void test(@RequestBody String jsonData) {
        JSONObject jsonObject = JSON.parseObject(jsonData);
        String username= jsonObject.getString("username");
        String username= jsonObject.getString("password");
     }
    

    相关文章

      网友评论

          本文标题:传递json数据有没有必要用RequestBody?

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