如何使用 RestSharp 調(diào)用 WebAPI 接口

REST 是由?Representational State Transfer?這三個單詞前綴合成,這種架構(gòu)風(fēng)格在前幾年特別流行,Restful API 的行為規(guī)范可以參考: https://docs.microsoft.com/en-us/azure/architecture/best-practices/api-design ?,通常 RESTful API 返回的格式為常見的 PlianText, JSON , XML 格式。
RestSharp 是一個開源的 Http 客戶端類庫,非常方便和 RESTful 格式的 Service 進(jìn)行交互,??的是,這個類庫封裝了 request 請求過程中復(fù)雜的細(xì)節(jié),而且 RestSharp 支持同步和異步兩種請求模式。
這篇文章將會討論如何使用 RestSharp 去請求 Asp.NET Core 服務(wù)。
實(shí)現(xiàn) DefaultController
打開 DefaultController.cs 文件并用下面的代碼進(jìn)行替換。
using?Microsoft.AspNetCore.Mvc;
using?System.Collections.Generic;
namespace?RESTAPIDemo.Controllers
{
???[Route("api/[controller]")]
???[ApiController]
???public?class?DefaultController?:?ControllerBase
???{
???????private?readonly?Dictionary<int,?string>?authors?=?new?Dictionary<int,?string>();
???????public?DefaultController()
???????{
???????????authors.Add(1,?"Joydip?Kanjilal");
???????????authors.Add(2,?"Steve?Smith");
???????????authors.Add(3,?"Michele?Smith");
???????}
???????
???????[HttpGet]
???????public?List<string>?Get()
???????{
???????????List<string>?lstAuthors?=?new?List<string>();
???????????foreach?(KeyValuePair<int,string>?keyValuePair?in?authors)
???????????????lstAuthors.Add(keyValuePair.Value);
???????????return?lstAuthors;
???????}
???????
???????[HttpGet("{id}",?Name?=?"Get")]
???????public?string?Get(int?id)
???????{
???????????return?authors[id];
???????}
???????
???????[HttpPost]
???????public?void?Post([FromBody]?string?value)
???????{
???????????authors.Add(4,?value);
???????}
???????
???????[HttpPut("{id}")]
???????public?void?Put(int?id,?[FromBody]?string?value)
???????{
???????????authors[id]?=?value;
???????}
???????[HttpDelete("{id}")]
???????public?void?Delete(int?id)
???????{
???????????authors.Remove(id);
???????}
???}
}
參考上面的 DefaultController 類,可以發(fā)現(xiàn) Action 方法的名字對應(yīng)著 Http 動詞的 GET,POST,PUT 和 DELETE,為了簡單起見,我使用了 Dictionary 來存取數(shù)據(jù),你可以用 瀏覽器 或者 Postman 或者 Fiddler 進(jìn)行測試,請注意,這里為了方便,我在 Post 方法中使用了硬編碼,實(shí)際場景中你可以用自己的方式生成唯一ID。
接下來的章節(jié)我們將會學(xué)習(xí)如何使用 RestSharp 去調(diào)用剛才構(gòu)建的 API 接口。
安裝 RestSharp
要想使用 RestSharp,你可以使用 Visual Studio 2019 中的?NuGet package manager?可視化界面進(jìn)行安裝,或者通過?NuGet package manager console?命令行輸入如下命令:
Install-Package?RestSharp
使用 RestSharp 調(diào)用 ASP.NET Core API
一旦 RestSharp 成功引用到項(xiàng)目之后,就可以使用它了,首先, 你需要創(chuàng)建 RestClient 實(shí)例,下面的代碼展示了如何對 RestClient 進(jìn)行實(shí)例化和初始化操作,要注意的是構(gòu)造函數(shù)中的 url 配置的是 基址,言外之意這不是完整的url。
RestClient?client?=?new?RestClient("http://localhost:58179/api/");
接下來,你可以傳遞?資源名?和?請求方式?兩個參數(shù)來實(shí)例化 RestRequest 對象,下面的代碼展示了如何實(shí)現(xiàn)。
RestRequest?request?=?new?RestRequest("Default",?Method.GET);
最后,你可以執(zhí)行 request 請求,再將返回的結(jié)果序列化, 最后用一個合適的對象接收,就像下面代碼一樣。
IRestResponsestring>>?response?=?client.Executestring>>(request);
下面是完整的可供參考的代碼清單。
using?RestSharp;
using?System;
using?System.Collections.Generic;
namespace?RESTSharpClientDemo
{
????class?Program
????{
????????private?static?RestClient?client?=?new?RestClient("http://localhost:58179/api/");
????????
????????static?void?Main(string[]?args)
????????{
????????????RestRequest?request?=?new?RestRequest("Default",Method.GET);
????????????IRestResponsestring>>?response?=?client.Executestring>>(request);
????????????Console.ReadKey();
????????}
????}
}
如果想使用 RestSharp 發(fā)送 POST 請求,可以使用如下代碼。
RestRequest?request?=?new?RestRequest("Default",?Method.POST);
request.AddJsonBody("Robert?Michael");
var?response?=?client.Execute(request);
RestSharp 可以跨多個 .NET 平臺使用,比如說:Momo,Xarmain,Blazer 等等,這也是它為什么非常流行的原因,而且 RestSharp 支持通過泛型方式獲取結(jié)果,這個特性特別 ??,想了解更多 RestSharp 知識,可參考 Github:https://github.com/restsharp/RestSharp
譯文鏈接:https://www.infoworld.com/article/3489481/how-to-consume-an-aspnet-core-web-api-using-restsharp.html
【推薦】.NET Core開發(fā)實(shí)戰(zhàn)視頻課程?★★★
.NET Core實(shí)戰(zhàn)項(xiàng)目之CMS 第一章 入門篇-開篇及總體規(guī)劃
【.NET Core微服務(wù)實(shí)戰(zhàn)-統(tǒng)一身份認(rèn)證】開篇及目錄索引
Redis基本使用及百億數(shù)據(jù)量中的使用技巧分享(附視頻地址及觀看指南)
.NET Core中的一個接口多種實(shí)現(xiàn)的依賴注入與動態(tài)選擇看這篇就夠了
用abp vNext快速開發(fā)Quartz.NET定時(shí)任務(wù)管理界面
在ASP.NET Core中創(chuàng)建基于Quartz.NET托管服務(wù)輕松實(shí)現(xiàn)作業(yè)調(diào)度
現(xiàn)身說法:實(shí)際業(yè)務(wù)出發(fā)分析百億數(shù)據(jù)量下的多表查詢優(yōu)化
