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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM