.net core MVC接受來自自前端的GET和POST請求方法的區別


小伙伴們都知道,常用的http請求有兩種方式,即GET方法和POST方法,很多剛入門的童鞋難免都會有一個誤區,是不是GET是從服務器上獲取數據,POST是向服務器傳送數據?

我的理解是:不論是GET還是POST,都是向服務器提交數據,並且請求之后都會從服務器獲取數據,兩者的區別僅是傳送方式不同而已,GET通過地址欄傳輸,POST通過報文傳輸。對資源的增刪改查操作其實都可以通過get/post方法來實現,下面就詳細介紹一下這兩種方法:

一、請求原理以及方式:

1、GET 請求

GET請求不存在請求實體部分,鍵值對參數放置在 URL 尾部,瀏覽器把form數據轉換成一個字串(name1=value1&name2=value2...),然后把這個字串追加到url后面,用?分割,加載這個新的url。因此請求頭不需要設置 Content-Type字段。

非 ASCII 碼會自動進行編碼轉換,例如發送請求:www.lalalal.com?haha=哈哈    。

值得一提的是,GET 參數的編碼方式是無法人為干涉的,這導致了不同瀏覽器有不同的編碼方式,因此最穩妥的方案是人工預編碼,人工解碼,從而禁止瀏覽器編碼的干涉。

2、POST 請求

POST把提交的數據則放置在是HTTP包的包體中。Http Header里的Content-Type一般有好幾種方式,但是我自己接觸到的是以下兩種方式:

a)   application/x-www-form-urlencoded:數據被編碼為名稱/值對。這是標准的編碼格式。瀏覽器的原生 form 表單,如果不設置 enctype 屬性,那么最終就會以 application/x-www-form-urlencoded 方式提交數據。會將表單內的數據轉換拼接成 key-value 對(非 ASCII 碼進行編碼)

b)   application/json:由於JSON 格式支持比鍵值對復雜得多的結構化數據,這一點現在越來越多的人把它作為請求頭,用來告訴服務端消息主體是序列化后的 JSON 字符串。本文就是重點介紹這種方式。

二、后端獲取參數的方式

對於后台接受來自前台的請求時,且Content-Type為application/json時,可以傳遞參數也可以不傳遞參數,但是多數情況下是需要有參數傳來的,所以,下面就只介紹有參數傳過來的情形:

1、獲取GET參數 Get:([FromQuery] User user)

[fromQuery]是告訴模型綁定在解析的過程中從HttpContext中那一部分獲取信息。

2、獲取POST參數 Post:([(FromBody)] User user)

[FromBody] 是參數綁定的過程中,告訴框架該參數是使用配置過的格式化程序從Http Body 中解析。和get不同的是,在接受參數的時候必須要先建立一個實體類來接受參數,並且該實體類必須與前端的請求參數一模一樣。

 


免責聲明!

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



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