服务消费者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