天天看點

十二、.net core(.NET 6)添加通用的通路webapi的方法(包括HttpClient和HttpWebRequest)

開發通用的通路webapi方法。

在common工具檔案夾下,建立一個類庫項目:Wsk.Core.WebHelper,并引用Package包項目,然後建立一個類HttpClientHelper,用于使用HttpClient方法進行通路webapi:

十二、.net core(.NET 6)添加通用的通路webapi的方法(包括HttpClient和HttpWebRequest)

建立一個接口IHttpClientHelper,用于HttpClientHelper繼承該接口。然後接口内新增一個傳回泛型類型的通用的POST通路webapi的方法:

十二、.net core(.NET 6)添加通用的通路webapi的方法(包括HttpClient和HttpWebRequest)

接着,在HttpClientHelper類裡面,進行對該方法的實作:

十二、.net core(.NET 6)添加通用的通路webapi的方法(包括HttpClient和HttpWebRequest)

說明:雖然使用了using,可以自動釋放資源;但是難免還是需要一點時間。在finally下面通過手動釋放資源,比自動釋放資源,資源釋放率會更快,在并發場景下,性能會更好一點點。當然,此處可以不适用using,因為手動釋放了,以上純屬個人喜好的風格寫法。

再來一個使用Basic加密進行通路的通用方法,寫法如上,具體請看代碼示例。先建立帶使用者名和密碼參數的接口:

十二、.net core(.NET 6)添加通用的通路webapi的方法(包括HttpClient和HttpWebRequest)

然後,在HttpClientHelper裡面進行對應的實作:

十二、.net core(.NET 6)添加通用的通路webapi的方法(包括HttpClient和HttpWebRequest)

以上為使用POST的方式進行,如果需要使用例如GET、PUT等,可以自行嘗試,寫法類似。

接口代碼:

十二、.net core(.NET 6)添加通用的通路webapi的方法(包括HttpClient和HttpWebRequest)
十二、.net core(.NET 6)添加通用的通路webapi的方法(包括HttpClient和HttpWebRequest)

View Code

實作類代碼:

十二、.net core(.NET 6)添加通用的通路webapi的方法(包括HttpClient和HttpWebRequest)
十二、.net core(.NET 6)添加通用的通路webapi的方法(包括HttpClient和HttpWebRequest)

現在再建立一個使用HttpWebRequest的通用通路webapi的方式。在WebHelper項目下面,建立 HttpWebRequestHelper類,以及IHttpWebRequestHelper接口:

十二、.net core(.NET 6)添加通用的通路webapi的方法(包括HttpClient和HttpWebRequest)

在接口裡面,建立一個通用的泛型類型的通路webapi的請求接口:

十二、.net core(.NET 6)添加通用的通路webapi的方法(包括HttpClient和HttpWebRequest)

然後,在HttpWebRequestHelper類裡面,進行有關的實作:

十二、.net core(.NET 6)添加通用的通路webapi的方法(包括HttpClient和HttpWebRequest)

HttpWebRequest沒有Dispose方法,是以此處沒有使用using寫法,最後需要手動使用Abort方法進行釋放資源。

十二、.net core(.NET 6)添加通用的通路webapi的方法(包括HttpClient和HttpWebRequest)
十二、.net core(.NET 6)添加通用的通路webapi的方法(包括HttpClient和HttpWebRequest)

接口實作代碼:

十二、.net core(.NET 6)添加通用的通路webapi的方法(包括HttpClient和HttpWebRequest)
十二、.net core(.NET 6)添加通用的通路webapi的方法(包括HttpClient和HttpWebRequest)

現在開發兩個webapi進行測試。首先把該類庫項目,添加到啟動項目的項目引用裡面。然後,在啟動項目裡面的AutofacRegister裡面,添加對Wsk.Core.WebHelper類庫項目的所有接口進行依賴注入注冊:

十二、.net core(.NET 6)添加通用的通路webapi的方法(包括HttpClient和HttpWebRequest)

注冊部分代碼:

建立一個實體類,用來當作參數和傳回值的測試:

十二、.net core(.NET 6)添加通用的通路webapi的方法(包括HttpClient和HttpWebRequest)

接着,在控制器裡面寫幾個測試方法進行測試,測試内容如下:

十二、.net core(.NET 6)添加通用的通路webapi的方法(包括HttpClient和HttpWebRequest)

控制器部分代碼:

十二、.net core(.NET 6)添加通用的通路webapi的方法(包括HttpClient和HttpWebRequest)
十二、.net core(.NET 6)添加通用的通路webapi的方法(包括HttpClient和HttpWebRequest)

運作,然後測試一下1和2接口是否可以使用,如果可以使用,拷貝對應的url位址,當作參數傳給主測試api裡面。

十二、.net core(.NET 6)添加通用的通路webapi的方法(包括HttpClient和HttpWebRequest)

獲得到請求的url位址字首是:http://localhost:35678/WSK/,帶入參數進行驗證:

十二、.net core(.NET 6)添加通用的通路webapi的方法(包括HttpClient和HttpWebRequest)

由此可見,兩個通用方法都可用。

備注:如果不适用泛型,也可以直接使用傳回String即可,不需要進行類型轉換。

如果覺得有用,歡迎點贊、評論、推薦或打賞~~

歡迎加入QQ群:

群号:1079830632

十二、.net core(.NET 6)添加通用的通路webapi的方法(包括HttpClient和HttpWebRequest)

繼續閱讀