ASP.NET WebAPI前知識:HTTP與RestfulAPI
對HTTP協定的基本了解是能理解並使用RestFul風格API的基礎,在了解了這些基礎之後,使用各種RestFul的開發框架才能得心應手。我一開始使用WebApi的時候就因為對這些知識缺乏了解,覺得用起來各種不順手,直到熟悉了這些HTTP的知識後,使用WebApi開發起來才覺得得心應手,我的理解裡,RestFul風格的API即是對HTTP協定良好支持,實現HTTP完整語意風格的API。
在介紹這些知識之前,我需要先強調許多人存在的一個誤解:HTTP的謂詞和資料傳遞方式。絕大多數人接觸並使用的HTTP協定都是在網站編寫的過程中,在一般的WEB應用中,我們只使用GET、POST兩個謂詞,其他謂詞並不適用,在這個習慣下很多人有幾個奇怪的認知:HTTP協定只適用於網站開發,HTTP僅有兩個謂詞:GET/POST,HTTP呼叫資料傳遞僅使用表單K-V的形式進行;在這種認知下,用這種風格開發的RestApi常常會不倫不類,使用ASP.NET WebAPi也會顯得不倫不類,平添麻煩。而我們首先要認識到,網站的資料互動只是HTTP使用的一個場景而已,HTTP可以傳遞各種形式的資料。
我們從HTTP的第一行說起:HTTP的第一行包含三個資訊:謂詞、URL、HTTP協定版本。三個數據使用空格隔開。
謂詞:對RestFul API來說謂詞是非常重要的一個元素,WEB API就是使用謂詞作為預設的路由方式,最常用的謂詞有:POST\DELETE \PUT\GET,這四個謂詞對應了「增、刪、改、查」四個動作(POST和PUT誰是增誰是改不同資料總有不同的說法,我其實有略微有點困惑啦……有定義說PUT是冪等操作,而POST不是,那PUT就更偏重於改而POST更偏重於增)。最常用的謂詞即為這四個,也有其他謂詞擁有不同的語意:
HEAD:只傳回對應頭部,不包含Body
##TRACE:對資料傳輸過程進行診斷OPTIONS:請求Web 伺服器告知其支援的各種功能#還有其他謂詞,如果需要可以其中,GET,DELETE不包含BODY,PUT,POST可以包含BODY。而如果一個謂詞包含了語意以外的運算,例如GET中帶BODY,POST用來刪除資源這種運算也是被允許的,稱為謂詞的重載 ,雖然HTTP可以支援謂詞的重載,但並不建議使用,因為不符合標準語意。
URL : URL定義了一個資源,例如www.example.com/person 定義了person為資源,結合上述所介紹的謂詞,我們提供Person一組操作:
GET www.example/person/1 即獲取ID為1的使用者的資訊## POST
BODY包含Person的描述) 建立一個Person資源PUT www.example/person/1
(BODY包含Person的描述)更新#一個Person資源 DELETE www.example/person/1 刪除ID為1的Person資源
. 1協議,HTTP2.0協定正在普及階段,用的還不是很多。 HTTP1.0 和HTTP1.1差異很小,其中的差異對於RestFul來說影響並不是很大。具體的差別大家可以查詢相關文件。##
HTTP的第一行內容就是這些,接下來會有一個\r\n來進行換行,接下來就是HTTP HEAD部分,HTTP HEAD描述了HTTP請求和回應。我認為HTTP HEAD即為HTTP協定中最重要的部分,他包含了編碼、BODY長度、內容協商等訊息,你也可以包含一些自訂資訊。下面我來為大家介紹幾個在RestFul API中常用的HEAD:
User-Agent:使用者代理,是什麼客戶端發出的請求,例如IE、Chrome、Fid dler等
HOST:網域名稱(HOST一般用於伺服器的網站綁定,一般且URL的網域相同,但是在一些自訂的DNS使用方式中,可能會出現HOST和URL中的網域不一致)
Authorization:驗證訊息,而這個欄位可以包含一些用於使用者驗證的訊息,而表示方法為:schema authorinfo,中間使用空格隔開,其中schema代表了驗證,其中schema代表了驗證方法,authorinfo代表了驗證訊息,常見的schema 如Base:authorinfo使用使用者名稱+密碼,並用Base64進行編碼。或使用Token,類似於Session的方式。
Accept:接受何種序列化方式傳回的數據,以MIME表示,用於對回應資料的內容協商,可以包含多個MIME,依優先順序排列,如application/json,application/xml,text/html;具體伺服器可以回傳什麼類型的資料需要由伺服器支援情況而定,有一些標準MIME,可以查到;有時我們也需要一些自訂的MIME,例如bson、protocolbuffer等,我們可以自訂MIME,在服務端開發自己的實現,而這些特的擴充在ASP.NET WebApi中都有對應的擴充點。
Content-Type:使用一個MIME表示,表示所發送請求的Body的序列化方式,常見的如application/json,還有WEB交互最常使用的application/x-www-# form-urlencoded,都表示了你的body部分的序列化方式,在請求、回應中都會出現
HTTP HEAD部分我認為是HTTP協定中最核心的部分,其中可配置、使用的地方實在太多太多,而且有太多的細節,以上為我列出的在我的工作中最常用的部分,介紹這些內容的資料全部列出來足夠完成一本書了,大家有興趣可以找相關資料,在Rest API中,內容協商經常讓一開始學習使用Rest的人很迷惑,一定要記住Accept,Content-Type兩個頭的作用和區別,Accept表示希望接受什麼樣的數據,Content-Type表示目前請求中Body的編碼方式。在ASP.NET WEBAPI中,如果請求中有Content-Type,而沒有ACCEPT,則預設使用Content-Type中的內容作為回應的內容協商。
Sharp狀態
的展示,也很重要,在REST API中最常用的狀態碼一般為2XX,4XX,5XX三個段,而1XX表示工作還要繼續,3XX一般表示重定向,在REST API中使用的並不多。而在最常用的三個Status 段中,2XX表示執行成功,4XX表示客戶端資料錯誤(例如參數校驗不通過),5XX表示伺服器端處理錯誤,例如有未處理的例外(如資料庫連線錯誤) ,根據這些狀態碼可以初步判斷API呼叫的執行狀態。 ##
在首部之後有一個空白行(\r\n)接下來就是Content,這裡有具體的業務數據,根據不同的Content-Type使用不同的序列化方式表示,例如JSON,XML,甚至HTML。各位在學習HTTP API時可以認為網頁應用也是HTTP 的一種應用,只是互動方式一般使用application/x-www-form-urlencoded 作為請求、 text/html作為回應的方式來互動。而RestAPI可以使用其他很多種編碼方式進行交互,支援的更廣,網頁應用只是使用HTTP傳輸的一種應用場景,RestAPI和網頁是可以不分開的。我覺得這一點Nancy比ASP.NET做得更好,Nancy並沒有把RestAPI和網頁割裂開來,而ASP.NET用MVC和WEBAPI將兩者割裂了;請求一個數據,我可以要求Accept為application/json時返回Json數據,而使用text/html時返回一個網頁;當然,將這兩種應用方式切割或合併起來都各有優劣。
我所寫的這些對於HTTP協定而言實在太少太少,大家有興趣的可以自行查找相關資料,我只是寫出了WEB API中常用的部分,下面我們來用一張圖為大家展示一下這些知識:
以上是ASP.NET WebAPI前知識:HTTP與RestfulAPI的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

http狀態碼520是指伺服器在處理請求時遇到了一個未知的錯誤,無法提供更具體的資訊。用於表示伺服器在處理請求時發生了一個未知的錯誤,可能是由於伺服器配置問題、網路問題或其他未知原因導致的。通常是由伺服器配置問題、網路問題、伺服器過載或程式碼錯誤等原因導致的。如果遇到狀態碼520錯誤,最好聯絡網站管理員或技術支援團隊以取得更多的資訊和協助。

http狀態碼403是伺服器拒絕了客戶端的請求的意思。解決http狀態碼403的方法是:1、檢查身份驗證憑證,如果伺服器要求身份驗證,確保提供正確的憑證;2、檢查IP位址限制,如果伺服器對IP位址進行了限制,確保客戶端的IP位址被列入白名單或未列入黑名單;3、檢查文件權限設置,如果403狀態碼與文件或目錄的權限設置有關,確保客戶端具有足夠的權限訪問這些文件或目錄等等。

掌握HTTP301狀態碼的意思:網頁重定向的常見應用場景隨著網路的快速發展,人們對網頁互動的要求也越來越高。在網頁設計領域,網頁重定向是一種常見且重要的技術,透過HTTP301狀態碼來實現。本文將探討HTTP301狀態碼的意義以及在網頁重新導向中的常見應用場景。 HTTP301狀態碼是指永久重新導向(PermanentRedirect)。當伺服器接收到客戶端發

如何使用NginxProxyManager實現HTTP到HTTPS的自動跳轉隨著互聯網的發展,越來越多的網站開始採用HTTPS協議來加密傳輸數據,以提高數據的安全性和用戶的隱私保護。由於HTTPS協定需要SSL憑證的支持,因此在部署HTTPS協定時需要有一定的技術支援。 Nginx是一款強大且常用的HTTP伺服器和反向代理伺服器,而NginxProxy

HTTP狀態碼200:探索成功回應的意義與用途HTTP狀態碼是用來表示伺服器回應狀態的數字代碼。其中,狀態碼200表示請求已成功被伺服器處理。本文將探討HTTP狀態碼200的具體意義與用途。首先,讓我們來了解HTTP狀態碼的分類。狀態碼分為五個類別,分別是1xx、2xx、3xx、4xx和5xx。其中,2xx表示成功的回應。而200是2xx中最常見的狀態碼

使用http.PostForm函數發送帶有表單資料的POST請求在Go語言的http包中,可以使用http.PostForm函數發送帶有表單資料的POST請求。 http.PostForm函數的原型如下:funcPostForm(urlstring,dataurl.Values)(resp*http.Response,errerror)其中,u

快速應用:PHP非同步HTTP下載多個檔案的實用開發案例分析隨著互聯網的發展,檔案下載功能已成為許多網站和應用程式的基本需求之一。而對於需要同時下載多個檔案的場景,傳統的同步下載方式往往效率低且耗費時間。為此,使用PHP非同步HTTP下載多個檔案成為了越來越常見的解決方案。本文將透過一個實際的開發案例,詳細分析如何使用PHP非同步HTTP

C#中常見的網路通訊和安全性問題及解決方法在當今互聯網時代,網路通訊已成為了軟體開發中必不可少的一部分。在C#中,我們通常會遇到一些網路通訊的問題,例如資料傳輸的安全性、網路連線的穩定性等。本文將針對C#中常見的網路通訊和安全性問題進行詳細討論,並提供相應的解決方法和程式碼範例。一、網路通訊問題網路連線中斷:網路通訊過程中,可能會出現網路連線的中斷,這會導致
