自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

聊聊RestSharp.net REST/HTTP 工具庫(kù)

開(kāi)發(fā) 開(kāi)發(fā)工具
顧名思義,RestSharp的主要受眾是使用REST API的開(kāi)發(fā)人員。但是,只要您擁有要發(fā)送的資源URI和請(qǐng)求參數(shù)符合W3C HTTP標(biāo)準(zhǔn),RestSharp可以通過(guò)HTTP調(diào)用任何API(但不能調(diào)用HTTP / 2)。

[[378590]]

本文轉(zhuǎn)載自微信公眾號(hào)「UP技術(shù)控」,作者conan5566 。轉(zhuǎn)載本文請(qǐng)聯(lián)系UP技術(shù)控公眾號(hào)。    

說(shuō)明

RestSharp的主要目的是通過(guò)HTTP對(duì)遠(yuǎn)程資源進(jìn)行同步和異步調(diào)用。顧名思義,RestSharp的主要受眾是使用REST API的開(kāi)發(fā)人員。但是,只要您擁有要發(fā)送的資源URI和請(qǐng)求參數(shù)符合W3C HTTP標(biāo)準(zhǔn),RestSharp可以通過(guò)HTTP調(diào)用任何API(但不能調(diào)用HTTP / 2)。

為.NET開(kāi)發(fā)人員使用HTTP API的主要挑戰(zhàn)之一是處理不同種類(lèi)的請(qǐng)求和響應(yīng),并將它們轉(zhuǎn)換為復(fù)雜的C#類(lèi)型。RestSharp可以負(fù)責(zé)將請(qǐng)求正文序列化為JSON或XML并反序列化響應(yīng)。它還可以根據(jù)不同的參數(shù)類(lèi)型(路徑,查詢(xún),表單或正文)形成有效的請(qǐng)求URI。

入門(mén)

您必須先添加NuGet軟件包,然后才能在應(yīng)用程序中使用RestSharp。您可以使用IDE或命令行執(zhí)行此操作:

  1. dotnet add package RestSharp 

基本用法

如果您只對(duì)API提出了一些一次性請(qǐng)求,則可以這樣使用RestSharp:

  1. using RestSharp; 
  2. using RestSharp.Authenticators; 
  3.  
  4. var client = new RestClient("https://api.twitter.com/1.1"); 
  5. client.Authenticator = new HttpBasicAuthenticator("username""password"); 
  6.  
  7. var request = new RestRequest("statuses/home_timeline.json", DataFormat.Json); 
  8.  
  9. var response = client.Get(request); 

IRestResponse包含從遠(yuǎn)程服務(wù)器返回的所有信息。您可以訪問(wèn)標(biāo)題,內(nèi)容,HTTP狀態(tài)等。

我們建議使用通用重載,例如Get將響應(yīng)自動(dòng)反序列化為.NET類(lèi)。

異步呼叫

所有同步方法都有其異步同級(jí),后綴為Async。

因此,您可以使用和來(lái)代替Get返回T或Execute返回。參數(shù)集通常是相同的。您可以選擇提供取消令牌,該令牌默認(rèn)設(shè)置為。IRestResponseGetAsyncExecuteAsyncCancellationToken.None

例如:

  1. using RestSharp; 
  2. using RestSharp.Authenticators; 
  3.  
  4. var client = new RestClient("https://api.twitter.com/1.1"); 
  5. client.Authenticator = new HttpBasicAuthenticator("username""password"); 
  6.  
  7. var request = new RestRequest("statuses/home_timeline.json", DataFormat.Json); 
  8.  
  9. var timeline = await client.GetAsync<HomeTimeline>(request, cancellationToken); 

不過(guò),最重要的區(qū)別是,以HTTP方法命名的異步方法返回Task而不是Task

ExecuteAsync但是,所有重載的行為都與相同,Execute并返回IRestResponse或IRestResponse。

內(nèi)容類(lèi)型

RestSharp支持將XML或JSON正文作為請(qǐng)求的一部分發(fā)送。要將主體添加到請(qǐng)求中,只需調(diào)用實(shí)例的AddJsonBody或AddXmlBody方法IRestRequest。

使用這些方法時(shí),無(wú)需設(shè)置Content-Type或DataFormat在請(qǐng)求中添加參數(shù),RestSharp會(huì)為您完成此操作。

RestSharp還將處理XML和JSON響應(yīng),并根據(jù)服務(wù)器響應(yīng)類(lèi)型執(zhí)行所有必要的反序列化任務(wù)。因此,僅在Accept要手動(dòng)反序列化響應(yīng)時(shí)才需要添加標(biāo)頭。

例如,只需要這些行即可使用JSON正文進(jìn)行請(qǐng)求:

  1. var request = new RestRequest("address/update"
  2.     .AddJsonBody(updatedAddress); 
  3. var response = await client.PostAsync<AddressUpdateResponse>(request); 

響應(yīng)

當(dāng)使用Execute或時(shí)ExecuteAsync,您將獲得IRestResponse具有Content屬性的back實(shí)例,該實(shí)例以字符串形式包含響應(yīng)。您可以在那里找到其他有用的屬性,例如StatusCode,ContentType等等。如果請(qǐng)求未成功,您將獲得響應(yīng),并將IsSuccessful屬性設(shè)置為,false并且在ErrorException和ErrorMessage屬性中說(shuō)明了錯(cuò)誤。

使用typeExecute或時(shí)ExecuteAsync,您將獲得IRestResponseback的實(shí)例,該實(shí)例與back實(shí)例相同,IRestResponse但也包含T Data具有反序列化響應(yīng)的屬性。

擴(kuò)展喜歡Get并且GetAsync不會(huì)返回全部,IRestResponse而只是反序列化的響應(yīng)。null如果出現(xiàn)問(wèn)題,您可能會(huì)回來(lái),并且很難理解該問(wèn)題。因此,在使用類(lèi)型化擴(kuò)展方法時(shí),建議將IRestClient.ThrowOnAnyError屬性設(shè)置為true。這樣,您告訴RestSharp在出現(xiàn)問(wèn)題時(shí)引發(fā)異常。然后,您可以將調(diào)用包裝在try/catch塊中,并相應(yīng)地處理異常。

 

責(zé)任編輯:武曉燕 來(lái)源: UP技術(shù)控
相關(guān)推薦

2024-02-29 18:06:39

HTTP性能優(yōu)化

2023-03-27 08:49:51

2021-02-07 09:05:56

微服務(wù)結(jié)構(gòu)云原生

2024-06-17 10:38:47

RefitHTTP 請(qǐng)求C#

2021-10-04 19:49:23

HTTP模塊No.js

2025-01-03 06:55:09

.NET HTTP開(kāi)發(fā)開(kāi)源

2024-10-15 09:34:57

2021-07-11 12:12:49

.NETJWTjson

2022-05-09 08:34:01

FeignhttpJava

2021-06-08 09:28:12

.Net通知服務(wù)

2024-05-06 00:00:00

.NET分布式鎖技術(shù)

2016-11-28 09:00:10

瀏覽器瀏覽器緩存服務(wù)端

2021-07-14 06:45:49

Windows.NetTopshelf

2021-03-05 11:35:39

Linux 命令工具

2024-02-29 07:28:44

Cron表達(dá)式解析庫(kù)

2022-08-02 20:21:42

開(kāi)源項(xiàng)目工具

2022-11-30 21:32:23

開(kāi)源buildah工具

2022-04-27 09:28:11

HTTPExpires

2023-01-27 23:11:25

GolangNetHttp

2024-03-11 10:21:53

.NET9調(diào)用FCall
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)