聊聊RestSharp.net REST/HTTP 工具庫
本文轉載自微信公眾號「UP技術控」,作者conan5566 。轉載本文請聯系UP技術控公眾號。
說明
RestSharp的主要目的是通過HTTP對遠程資源進行同步和異步調用。顧名思義,RestSharp的主要受眾是使用REST API的開發人員。但是,只要您擁有要發送的資源URI和請求參數符合W3C HTTP標準,RestSharp可以通過HTTP調用任何API(但不能調用HTTP / 2)。
為.NET開發人員使用HTTP API的主要挑戰之一是處理不同種類的請求和響應,并將它們轉換為復雜的C#類型。RestSharp可以負責將請求正文序列化為JSON或XML并反序列化響應。它還可以根據不同的參數類型(路徑,查詢,表單或正文)形成有效的請求URI。
入門
您必須先添加NuGet軟件包,然后才能在應用程序中使用RestSharp。您可以使用IDE或命令行執行此操作:
- dotnet add package RestSharp
基本用法
如果您只對API提出了一些一次性請求,則可以這樣使用RestSharp:
- using RestSharp;
- using RestSharp.Authenticators;
- var client = new RestClient("https://api.twitter.com/1.1");
- client.Authenticator = new HttpBasicAuthenticator("username", "password");
- var request = new RestRequest("statuses/home_timeline.json", DataFormat.Json);
- var response = client.Get(request);
IRestResponse包含從遠程服務器返回的所有信息。您可以訪問標題,內容,HTTP狀態等。
我們建議使用通用重載,例如Get
異步呼叫
所有同步方法都有其異步同級,后綴為Async。
因此,您可以使用和來代替Get
例如:
- using RestSharp;
- using RestSharp.Authenticators;
- var client = new RestClient("https://api.twitter.com/1.1");
- client.Authenticator = new HttpBasicAuthenticator("username", "password");
- var request = new RestRequest("statuses/home_timeline.json", DataFormat.Json);
- var timeline = await client.GetAsync<HomeTimeline>(request, cancellationToken);
不過,最重要的區別是,以HTTP方法命名的異步方法返回Task
ExecuteAsync但是,所有重載的行為都與相同,Execute并返回IRestResponse或IRestResponse
內容類型
RestSharp支持將XML或JSON正文作為請求的一部分發送。要將主體添加到請求中,只需調用實例的AddJsonBody或AddXmlBody方法IRestRequest。
使用這些方法時,無需設置Content-Type或DataFormat在請求中添加參數,RestSharp會為您完成此操作。
RestSharp還將處理XML和JSON響應,并根據服務器響應類型執行所有必要的反序列化任務。因此,僅在Accept要手動反序列化響應時才需要添加標頭。
例如,只需要這些行即可使用JSON正文進行請求:
- var request = new RestRequest("address/update")
- .AddJsonBody(updatedAddress);
- var response = await client.PostAsync<AddressUpdateResponse>(request);
響應
當使用Execute或時ExecuteAsync,您將獲得IRestResponse具有Content屬性的back實例,該實例以字符串形式包含響應。您可以在那里找到其他有用的屬性,例如StatusCode,ContentType等等。如果請求未成功,您將獲得響應,并將IsSuccessful屬性設置為,false并且在ErrorException和ErrorMessage屬性中說明了錯誤。
使用typeExecute
擴展喜歡Get