SpringCloud中服务消费者接受前台传参问题(报错415)

服务消费者clientFeign,接受前台form表单post提交的数据,虽然传递参数是对象类型,但是后台不能添加@RequestBody注解!!!,form表单提交的数据不是json格式!!!

1. 前端

<form class="layui-form" action="/menu/save" method="post">
            <div class="layui-form-item">
                <label class="layui-form-label">菜品:</label>
                <div class="layui-inline">
.....

2.服务消费者 ClientFeign 控制层接收数据

PostMapping(value = "/save")
    public String save(Menu menu){
        menuFeign.save(menu);
        return "redirect:/menu/redirect/menu_manage";
    }

错误格式:

PostMapping(value = "/save")
    public String save(@RequestBody Menu menu){
        menuFeign.save(menu);
        return "redirect:/menu/redirect/menu_manage";
    }

这里介绍下@RequestBody 

使用@RequestBody注解时,是用于接收Content-Type为application/json类型的请求,数据类型是JSON:{"aaa":"111","bbb":"222"}

不使用@RequestBody注解时,可以接收Content-Type为application/x-www-form-urlencoded类型的请求所提交的数据,数据格式:aaa=111&bbb=222  ,form表单提交以及jQuery的.post()方法所发送的请求就是这种类型。

很多时候,我们用 Ajax 提交数据时,也是使用这种方式。例如 JQuery 和 QWrap 的 Ajax,Content-Type 默认值都是「application/x-www-form-urlencoded;charset=utf-8」。

所以后台添加@RequestBody接收前台的form表单数据会报415错,具体如下:

There was an unexpected error (type=Unsupported Media Type, status=415).
Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported

 

参考链接:

SpringCloud之Feign调用服务:https://blog.csdn.net/uotail/article/details/84673347

SpringCloud供应者消费者模式传参数:https://blog.csdn.net/weixin_41595700/article/details/86508352

参考链接:

https://blog.csdn.net/f45056231p/article/details/84972881

原文地址:https://www.cnblogs.com/yh-simon/p/12264483.html