91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

自動類型安全的REST .NET標準庫refit是怎樣的

發布時間:2022-01-05 17:08:55 來源:億速云 閱讀:110 作者:柒染 欄目:大數據

本篇文章為大家展示了自動類型安全的REST .NET標準庫refit是怎樣的,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

在SCOTT HANSELMAN 博客上看到一個好東西《Exploring refit, an automatic type-safe REST library for .NET Standard》,他推薦了一個.NET標準1.4 的自動類型安全的REST庫refit。 refit 類似于Java的Retrofit,是一套RESTful架構的.NET客戶端實現,基于特性,提供把REST API返回的數據轉化為(Plain Ordinary C# Object,簡單C#對象),POCO to JSON,網絡請求(POST,GET,PUT,DELETE等)封裝,內部封裝使用HttpClient,前者專注于接口的封裝,后者專注于網絡請求的高效,二者分工協作。我們的應用程序通過 refit請求網絡,實際上是使用 refit接口層封裝請求參數、Header、Url 等信息,之后由 HttpClient完成后續的請求操作,在服務端返回數據之后,HttpClient將原始的結果交給 refit,后者根據用戶的需求對結果進行解析的過程。

例如:

public interface IGitHubApi
{
    [Get("/users/{user}")]
    Task<User> GetUser(string user);
}

定義上面的一個REST API接口。 該接口定義了一個函數 GetUser,該函數會通過HTTP GET請求去訪問服務器/users/{user}路徑并把返回的結果封裝為User POCO 對象返回。

其中URL路徑中的{user}的值為GetUser函數中的參數 user的取值。

然后通過 RestService 類來生成一個 IGitHubApi 接口的實現,使用HttpClient 調用;

var gitHubApi = RestService.For<IGitHubApi>(https://api.github.com);
var octocat = await gitHubApi.GetUser("octocat");

從上面的示例可以看出, refit使用特性來聲明HTTP請求

  • 支持 URL 參數替換和查詢參數

  • 返回結果轉換為C#對象(返回結果可以為JSON)

  • 支持 Multipart請求和文件上傳

具體使用文檔

函數和函數參數上的特性聲明了請求方式

1、請求方式

每個函數都必須帶有 HTTP特性來表明請求方式和請求的URL路徑。類庫中有5個HTTP注解:GETPOSTPUT,DELETEHEAD。注解中的參數為請求的相對URL路徑

[Get("/users/list")]

在URL路徑中也可以指定URL參數:

[Get("/users/list?sort=desc")]
2、URL處理

請求的URL可以根據函數參數動態更新。一個可替換的區塊為用 { 和 } 包圍的字符串,而函數參數必需用 @AliasAs特性標明,并且特性的參數為 同樣的字符串

[Get("/group/{id}/users")]//注意 字符串id
Task<List<User>> GroupList([AliasAs("id")] int groupId); //注意 AliasAs特性的參數要和前面的字符串一樣 id
還支持查詢參數
[Get("/group/{id}/users")]
Task<List<User>> GroupList([AliasAs("id")] int groupId, [AliasAs("sort")] string sortOrder);

GroupList(4, "desc");
>>> "/group/4/users?sort=desc"
3、請求體(Request Body)

通過[Body]特性可以聲明一個對象作為請求體發送到服務器。

[Post("/users/new")]
Task CreateUser([Body] User user);
對象將被RestService 使用對應的轉換器轉換為字符串或者字節流提交到服務器。
4、FORM ENCODED AND MULTIPART 表單和Multipart

函數也可以注解為發送表單數據和multipart 數據

5、服務器結果轉換為C# 對象

使用RestService 的轉換器把HTTP請求結果(默認為JSON)轉換為C#對象,C#對象通過函數返回值指定

6、添加請求頭

我們可以通過[Headers]來添加請求頭,支持動態的請求頭。

refit是非常強大的,小編通過豐富的示例和對源碼的挖掘,向大家展示了 refit自身強大的功能以及擴展性

上述內容就是自動類型安全的REST .NET標準庫refit是怎樣的,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

普定县| 静宁县| 黎城县| 张家界市| 邢台市| 武强县| 岐山县| 望都县| 镇平县| 池州市| 柯坪县| 安岳县| 浦县| 东港市| 南城县| 伊宁市| 荣成市| 虞城县| 汉中市| 杨浦区| 富阳市| 贵溪市| 高青县| 潮州市| 清新县| 隆回县| 定兴县| 乌鲁木齐县| 来宾市| 东明县| 海南省| 大安市| 寻乌县| 常山县| 仁布县| 吉安市| 彰武县| 保康县| 宜城市| 赫章县| 根河市|