服務消費者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
參考鏈接: