get 、post請求 后台@RequestParam、@RequestBody 接收的方法集合


get 、post請求 后台@RequestParam、@RequestBody 接收的方法集合

joy-liudan 2018-11-14 15:48:51 23123 收藏 56
文章標簽: @RequestParam @RequestBody get   post請求 前后台傳遞數組 Content-Type
版權
post、get請求       參數:數組、JSON對象、JSON字符串、地址欄

@RequestParam、@RequestBody     后端接收     

//定義json對象,同時包含數組

var _queryData = {

                       jflb:"婚姻家庭糾紛",

                       zlay:"xxxxx",

                       ysCode:["0123","4567"]

                  }

post請求 :

 

 

 

 

 

去除接收字符串的@RequestParam注解,直接將兩個值放入會有什么后果?

結果:依然能夠接收到參數   amazing!!!!!!

原因: 

(1)AJAX未定義Content-type的類型,Jquery默認使用application/x-www-form-urlencoded類型。相當於 SpringMVC的@RequestParam注解,Servlet的request.getParameter.

(2) Content-Type x-www-form-urlencoded的編碼方式把JSON對象數據轉換成一個字串,

(3)POST方式提交, 瀏覽器把數據封裝到HTTP BODY中,然后發送到服務器,

 

get請求 :

 

 

 

坑1:

 

 

注意:

(1)未定義Content-type的類型

Jquery默認使用application/x-www-form-urlencoded類型(application/x-www-form-urlencoded     把JSON對象數據轉換成一個字串)。那么意思就是SpringMVC的@RequestParam注解,Servlet的request.getParameter是可以接受到以這種格式傳輸的JSON對象的。

(2)使用@RequestBody注解

    前台的Content-Type必須要改為application/json,如果沒有更改,前台會報錯415(Unsupported Media Type)。后台日志就會報錯Content type ‘application/x-www-form-urlencoded;charset=UTF-8’ not supported

(3)前台報400的錯:原因:GET方式添加了contentType: 'application/json;charset=UTF-8'

(4)@RequestParam 它的作用和我們Servlet中的request.getParameter是基本相同的

坑2:

傳遞數組:

(1)post請求,JSON對象傳遞,@RequestParam 接收

最重要:@RequestParam接收的參數說明是數組

 @RequestParam("ysCode[]") @ApiParam(name = "ysCode", value = "必傳參數:ysCode", required = true) List<String> ysCode

(2)post請求  JSON字符串傳遞  @RequestBody接收(請看下面的例子)

(3)get請求,JSON對象傳遞,@RequestParam 接收

最重要:@RequestParam接收的參數說明是數組

 @RequestParam("ysCode[]") @ApiParam(name = "ysCode", value = "必傳參數:ysCode", required = true) List<String> ysCode

(4)post請求  JSON字符串傳遞  @RequestParam 接收(請看下面的例子)

Tips1:(用法請看下面的例子)

@ApiParam    @PathVariable  @RequestParam  三者的區別

1.@ApiParam 顧名思義,是注解api的參數,也就是用於swagger提供開發者文檔,文檔中生成的注釋內容。

2.@RequestParam,是獲取前端傳遞給后端的參數,可以是get方式,也可以是post方式。其中如果前端傳遞的參數和后端你接受的參數起的名字字段是一致的可以省略不寫,也可以直接寫@RequestParam String title,如果不一致一定要完整寫,不然獲取不到,

3.@PathVariable,是獲取get方式,url后面參數,進行參數綁定

Tips2:

dataType: "json"

預期服務器返回的數據類型。如果不指定, jQuery 將自動根據 HTTP 包 MIME 信息來智能判斷,比如XML MIME類型就被識別為XML。在1.4中,JSON就會生成一個JavaScript對象,而script則會執行這個腳本。隨后服務器端返回的數據會根據這個值解析后,傳遞給回調函數

"xml": 返回 XML 文檔,可用 jQuery 處理。

"html": 返回純文本 HTML 信息;包含的script標簽會在插入dom時執行。

"script": 返回純文本 JavaScript 代碼。不會自動緩存結果。除非設置了"cache"參數。'''注意:'''在遠程請求時(不在同一個域下),所有POST請求都將轉為GET請求。(因為將使用DOM的script標簽來加載)

"json": 返回 JSON 數據 。

"jsonp": JSONP 格式。使用 JSONP 形式調用函數時,如 "myurl?callback=?" jQuery 將自動替換 ? 為正確的函數名,以執行回調函數。

"text": 返回純文本字符串

 

 

Tips3:

JSON對象-----JSON字符串

JavaScript向我們提供了兩個工具:

JSON.parse( )            字符串轉化為對象

JSON.stringfy( )         json對象序列化,對象轉化為字符串, 可以傳單個json對象字符串或多個對象json字符串

 

Tips4: 

 

 

————————————————
版權聲明:本文為CSDN博主「joy-liudan」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_37270353/article/details/84067715


免責聲明!

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



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