jquery与Spring @RequestBody注解的问题

由于jquery的get post请求 默认的contentType为:application/x-www-form-urlencoded;charset=UTF-8’,而我写的Java 接口的参数习惯性的写成了(@Request Object obj),这个时候前端报错error: "Unsupported Media Type"

message: "Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported"

path: "/user/login"

status: 415

timestamp: "2018-12-18T13:59:07.603+0000",

头疼了很久,开始的时候通过在ajxa请求上添加contentType再将data转换成json,代码如图

$("#a").click(function () {

    $.ajax({

        url:"/user/login",

        **data:JSON.stringify(data),**

        dataType:"json",

        type:"post",

        **headers: {

            "Content-Type": "application/json; charset=utf-8"

        },**//此处可以不加headers,直接属性contentType

        success:function (e) {

            console.log("111");

        }

    })

})

,虽然这个post请求成功,但在下百思不得其解,之前的项目都没有这个问题,于是上网查了查,发现@RequestBoby这个请求一般用来处理非Content-Type: application/x-www-form-urlencoded编码格式的数据。

也就是说这个注解与jquery默认都contentType不符合,这个时候我尝试将(@Request Object object)的@RequestBody注解去掉,改成了(Object obj),

然后使用jquery默认的post请求,即:`$.post(url,data,function)`,请求成功。

由于本人一直的项目是前后端分离,前端项目做的少,遇到这个问题,自己琢磨了几个小时,分享出来,希望对大家有帮助

你可能感兴趣的:(jquery与Spring @RequestBody注解的问题)