国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

axios發送post請求,request.getParamter接收不到

Awbeci / 1339人閱讀

摘要:場景如下前端使用向后臺發了一個為的請求,后臺接口如下發現接收不到的信息。改為也一樣接收不到。表單請求提交時,使用的是,而使用原生的請求如果不指定請求頭,默認使用的是。

場景如下:
前端vue使用axios向后臺發了一個Content-type為application/json的post請求,
后臺springmvc接口如下:

@RequestMapping("xxx")
public Result xxx(User user) {
    Result result = Result.getSuccessResult();
    return  result;
}

發現接收不到user的信息。
改為 request.getParamter 也一樣接收不到。
搜索一番,從這篇博客找到了答案
AJAX POST請求中參數以form data和request payload形式在servlet中的獲取方式

jquery在執行post請求時,會設置Content-Type為application/x-www-form-urlencoded,所以服務器能夠正確解析,而使用原生ajax請求時,如果不顯示的設置Content-Type,那么默認是text/plain,這時服務器就不知道怎么解析數據了,所以才只能通過獲取原始數據流的方式來進行解析請求數據。
HTTP POST表單請求提交時,使用的Content-Type是application/x-www-form-urlencoded,而使用原生AJAX的POST請求如果不指定請求頭RequestHeader,默認使用的Content-Type是text/plain;charset=UTF-8。
由于Tomcat對于Content-Type multipart/form-data(文件上傳)和application/x-www-form-urlencoded(POST請求)做了“特殊處理”。
服務器為什么會對表單提交和文件上傳做特殊處理,是因為表單提交數據是名值對的方式,且Content-Type為application/x-www-form-urlencoded,而文件上傳服務器需要特殊處理,普通的post請求(Content-Type不是application/x-www-form-urlencoded)數據格式不固定,不一定是名值對的方式,所以服務器無法知道具體的處理方式,所以只能通過獲取原始數據流的方式來進行解析。

總結為:原生ajax如果不指定Context-type默認使用text/plain;charset=UTF-8,jquery的ajax則是application/x-www-form-urlencoded,而axios底層正是使用了原生的ajax,后端會對非Content-type不為application/x-www-form-urlencoded的請求做特殊處理,由此導致后端request.getParameter()無法接收。

解決方法
1、不使用框架的情況下,使用原始的讀取流的方式:

 private String getRequestPayload(HttpServletRequest req) {
   StringBuildersb = new StringBuilder();
   try(BufferedReaderreader = req.getReader();) {
        char[]buff = new char[1024];
        intlen;
        while((len = reader.read(buff)) != -1) {
                 sb.append(buff,0, len);
        }
   }catch (IOException e) {
        e.printStackTrace();
   }
   returnsb.toString();
 }

2、使用spring框架:
加入@RequestBody注解,如下:

@RequestMapping("xxx")
public Result xxx(@RequestBody User user) {
    Result result = Result.getSuccessResult();
    return  result;
}

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/76521.html

相關文章

  • axiospost請求后臺(ThinkPHP5)接收不到數據

    摘要:最近做項目,做分頁的功能,使用給后臺發送數據,使用接口還是工具都可獲取數據,唯獨獲取不到經過排除,發現這與的傳參格式有關系在使用時,要注意到配置選項中包含和兩者,以為他們是相同的,實則不然。因為是添加到的請求字符串中的,用于請求。 最近做vue項目,做分頁的功能,使用post給后臺發送數據,使用接口還是工具(postman)都可獲取數據,唯獨axios獲取不到;經過排除,發現這與axi...

    nemo 評論0 收藏0
  • axios使用心得總結

    摘要:最近項目中使用也遇到了一些問題,就借此機會總結一下,如有錯誤,還請不吝指正。而在使用時對應的傳參使用的是,是作為請求體發送的,同樣使用這種形式的還有等請求方式。層在環境中可以使用。 Axios是一個基于Promise的 HTTP 庫,可以用在瀏覽器和node.js 中,因為尤大大的推薦,axios也變得越來越流行。最近項目中使用axios也遇到了一些問題,就借此機會總結一下,如有錯誤,...

    Lowky 評論0 收藏0
  • vue的axios組件如何與PHP后端交換數據

    摘要:本文的目的在于探討前后端數據交互,并給出不同的解決方案供大家參考。實際使用只需在配置文件配置其他配置其他組件配置以上就是前端處理和后端處理兩種解決方案,可根據實際情況選擇 一、前言 axios是vue項目中用來使用ajax技術來與后臺交換數據的一個組件,在vue的作者推薦下,相當數量的vue前端開發人員開始使用它。但是在實際開發過程中,卻時有出現后端接收不到前端post過來的數據的情況...

    韓冰 評論0 收藏0
  • vue的axios組件如何與PHP后端交換數據

    摘要:本文的目的在于探討前后端數據交互,并給出不同的解決方案供大家參考。實際使用只需在配置文件配置其他配置其他組件配置以上就是前端處理和后端處理兩種解決方案,可根據實際情況選擇 一、前言 axios是vue項目中用來使用ajax技術來與后臺交換數據的一個組件,在vue的作者推薦下,相當數量的vue前端開發人員開始使用它。但是在實際開發過程中,卻時有出現后端接收不到前端post過來的數據的情況...

    CloudwiseAPM 評論0 收藏0
  • 解決Vue axios post請求,后臺獲取不到數據問題

    摘要:最近做項目,需要用到后臺是第一次使用進行請求,本以為同一樣,會很簡單,但是結果往往不讓人滿意啊,請求很簡單,這里就不說了,主要說下請求方式。以上只是個人的實踐經過,有其他解決辦法的,歡迎留言。 最近做項目,需要用到vue,后臺是php,第一次使用axios進行請求,本以為同ajax一樣,會很簡單,但是結果往往不讓人滿意啊,get請求很簡單,這里就不說了,主要說下 post請求方式。 使...

    endiat 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<