本文转载自微信公众号「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