轉(zhuǎn)自:天藍(lán)色空
cnblogs.com/zhan520g/p/10303225.html
前言
詳細(xì)關(guān)注我們常用的Get和Post請求(取Http[動詞] of。NET Core 2.2為方向,推薦這個屬性路由)。如果要驗(yàn)證,可以直接使用VS2017創(chuàng)建ASP.NET核心API(。net core 2.2)并在DefaultController中操作它。
幫忙回憶一下,Get和Post有什么區(qū)別?
get參數(shù)通過url傳遞,post放在request body中。get請求在url中傳遞的參數(shù)是有長度限制的,而post沒有。get比post更不安全,因?yàn)閰?shù)直接暴露在url中,所以不能用來傳遞敏感信息。get請求只能進(jìn)行url編碼,而post支持多種編碼方式。get請求瀏覽器會主動cache,而post不會。get請求參數(shù)會被完整保留在瀏覽歷史記錄里,而post中的參數(shù)不會被保留。get和post質(zhì)上就是tcp鏈接,并無差別。但是由于HTTP的規(guī)定和瀏覽器/服務(wù)器的限制,導(dǎo)致他們在應(yīng)用過程中體現(xiàn)出一些不同。get產(chǎn)生一個tcp數(shù)據(jù)包;post產(chǎn)生兩個tcp數(shù)據(jù)包。對于get方式的請求,瀏覽器會把http header和data一并發(fā)送出去,服務(wù)器響應(yīng)200(返回數(shù)據(jù));而對于post,瀏覽器先發(fā)送header,服務(wù)器響應(yīng)100 continue,瀏覽器再發(fā)送data,服務(wù)器響應(yīng)200 ok(返回數(shù)據(jù))。據(jù)此設(shè)置,相應(yīng)的結(jié)果如下:
帶參數(shù)的請求
1.默認(rèn)模式
如果只使用id獲取一條數(shù)據(jù),可以實(shí)現(xiàn)如下圖所示。這樣,請求路徑的操作就簡單了。訪問路徑:api/values/id。大括號中的{}名稱必須與參數(shù)名稱一致。
如上所示,無法滿足get的多個參數(shù)請求模式。如果有多個參數(shù)并且使用了get請求,則需要返回到舊的例程,如下圖所示:
2.路由模板設(shè)置
同樣,新的路由模板只需要攜帶方便請求的簡單參數(shù)nameid,大括號中的{}名稱必須與參數(shù)名稱一致。
上圖無法滿足新路由模板get的多參數(shù)請求模式。如果有多個參數(shù)并且使用了get請求,則需要返回到舊的例程,如下圖所示:
發(fā)布請求
沒有參數(shù)請求
1.默認(rèn)模式
如下圖所示,因?yàn)檎埱舐窂绞?api/values,所以整個控制器將尋找Post請求
請求路徑:/API/[控制器]
但是,如果此時有另一個Post方法,并且新模板沒有重命名,那么無論是否有參數(shù),都會報錯。api/values請求路徑將只找到POST請求模式。因此,應(yīng)進(jìn)行以下路由模板設(shè)置
2.路由模板設(shè)置
與httpGet請求模式下的路由模板設(shè)置相同,也可以設(shè)置三個參數(shù):模板、名稱和順序,后兩個是可選的。
請求路徑:/api/values/PostMethod
帶參數(shù)的請求
1.默認(rèn)模式
嘗試了很多方法,最后發(fā)現(xiàn)以下可行,請求路徑:/api/[controller]
Ajax和郵差請求都需要內(nèi)容類型:“application/x-www-form-URL encoded”,重點(diǎn)是不能被【ApiController】和【FromBody】修改(暫時不評論,我覺得還是用Get比較好)。
Ajax請求代碼如下:
$.ajax({
鍵入:“開機(jī)自檢”,
接受:" application/x-www-form-URL encoded ",
url: "/api/post ",
content type:" application/x-www-form-URL encoded ",
數(shù)據(jù):{
值':'張三豐'
},
錯誤:函數(shù)(jqXHR,textStatus,error through){
警惕(“出問題了!”);
},
成功:函數(shù)(結(jié)果){
}
});
2.路由模板設(shè)置
與httpGet請求模式下的路由模板設(shè)置相同,也可以設(shè)置三個參數(shù):模板、名稱和順序,后兩個是可選的。
請求路徑:/api/[controller]/PostName
3.組合參數(shù)請求
如果同時存在復(fù)雜類型參數(shù)和簡單類型參數(shù),該怎么辦,如下圖:
此時,請求控制器必須具有顯示屬性[ApiController]。請求如下:
請求路徑:/api/todo?名稱=小明& ampid=20
4.動態(tài)類型
如下圖所示,支持動態(tài)類型參數(shù),content type:“application/JSON”
請求路徑:/api/todo
總結(jié)
歡迎討論,歡迎討論,歡迎指出不準(zhǔn)確之處,歡迎一起學(xué)習(xí)!我們也鼓勵大家認(rèn)真寫博客,鞏固自己和他人。
1.《get請求 ASP.NET Core API 的Get和Post請求詳解》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識,僅代表作者本人觀點(diǎn),與本網(wǎng)站無關(guān),侵刪請聯(lián)系頁腳下方聯(lián)系方式。
2.《get請求 ASP.NET Core API 的Get和Post請求詳解》僅供讀者參考,本網(wǎng)站未對該內(nèi)容進(jìn)行證實(shí),對其原創(chuàng)性、真實(shí)性、完整性、及時性不作任何保證。
3.文章轉(zhuǎn)載時請保留本站內(nèi)容來源地址,http://f99ss.com/tiyu/1043516.html