Content type ‘application/x-www-form-urlencoded;charset=UTF-8‘ not supported

今天在使用layui框架的时候,报了这么一个错误Content type ‘application/x-www-form-urlencoded;charset=UTF-8’ not supported。写篇博客来记录一下。同时也能够帮助我
彻底了解@RequeseParam和@RequestBody两个注解的使用。

首先为什么会报这个错?
前后端数据交互出现的json类型不符合。前端页面指定的json格式和后端接收的json格式不一样。

这是我原来写的使用ajax发送请求的js代码。

 $.ajax({
                url: '/recruit/company/add',
                type: 'post',
                data: JSON.stringify(data.field),
                dataType: 'json',
                success: function (data) {
                    if (data.code==1){
                        alert("操作成功")
                    }else{
                        alert("操作失败")
                    }


                }
            })

这是后端代码。

 @RequestMapping("/add")
    @ResponseBody
    public DataVO add(@RequestBody Company company){
       DataVO dataVO=  companyService.addCompany(company);
       return dataVO;
    }

当我提交表单之后,就报了上述错误。在这里其实有两种处理方式。一种是将 前端页面的数据类型改为application/json
Content type ‘application/x-www-form-urlencoded;charset=UTF-8‘ not supported
另外一种方式是使用@Requestparam注解,而不是使用@Requestbody注解。

具体详情解析

json分为两种类型

(1) json 对象类型,即前端定义的Content type 为 application/x-www-form-urlencoded等
(2) json字符串类型,即前端定义的Content type 为 application/json

当前端定义为 application/x-www-form-urlencoded 时我们使用@RequestParam注解来接收参数。
当前段定义为 application/json 时,我们使用@Requestbody注解来接收参数

上一篇:NODE连接Mysql ERROR“ER_NOT_SUPPORTED_AUTH_MODE“解决方式


下一篇:JPA不支持delete的问题解决--- JPA Not supported for DML operations