当前位置: 首页 > 科技观察

浅谈RestSharp.netREST-HTTP工具库

时间:2023-03-20 15:28:44 科技观察

本文转载自微信公众号《UP科技控》,作者conan5566。转载本文请联系UP技控公众号。说明RestSharp的主要目的是通过HTTP对远程资源进行同步和异步调用。顾名思义,RestSharp的主要受众是使用RESTAPI的开发人员。但是,只要您有要发送的资源URI并且请求参数符合W3CHTTP标准,RestSharp就可以通过HTTP(但不是HTTP/2)调用任何API。.NET开发人员使用HTTPAPI的主要挑战之一是处理不同类型的请求和响应并将它们转换为复杂的C#类型。RestSharp可以负责将请求文本序列化为JSON或XML并反序列化响应。它还可以根据不同的参数类型(路径、查询、表单或文字)形成有效的请求URI。入门您必须先添加NuGet包,然后才能在您的应用程序中使用RestSharp。您可以使用IDE或命令行执行此操作:dotnetaddpackageRestSharp基本用法如果您只是向API发出一些一次性请求,则可以像这样使用RestSharp:usingRestSharp;usingRestSharp.Authenticators;varclient=newRestClient("https://api.twitter.com/1.1");client.Authenticator=newHttpBasicAuthenticator("用户名","密码");varrequest=newRestRequest("statuses/home_timeline.json",DataFormat.Json);varresponse=client.Get(请求);IRestResponse包含从远程服务器返回的所有信息。您可以访问标头、内容、HTTP状态等。我们建议使用通用重载(例如Get)来自动将响应反序列化为.NET类。异步调用所有同步方法都有其对应的异步方法,后缀为Async。所以你可以使用and而不是Get返回T或Execute返回。参数集通常是相同的。您可以选择提供默认设置的取消标记。IRestResponseGetAsyncExecuteAsyncCancellationToken.None例如:usingRestSharp;usingRestSharp.Authenticators;varclient=newRestClient("https://api.twitter.com/1.1");client.Authenticator=newHttpBasicAuthenticator("用户名","密码");varrequest=newRestRequest(“密码”);statuses/home_timeline.json",DataFormat.Json);vartimeline=awaitclient.GetAsync(request,cancellationToken);然而,最重要的区别在于以HTTP方法命名的异步方法返回Task而不是TaskExecuteAsync但是,所有重载行为与Execute相同并返回IRestResponse或IRestResponse。内容类型RestSharp支持发送XML或JSON文字作为请求的一部分。要向请求添加正文,只需调用IRestRequest实例的AddJsonBody或AddXmlBody方法。使用这些方法时,无需设置Content-Type或DataFormat以在请求中添加参数,RestSharp将为您完成。RestSharp还将处理XML和JSON响应,并根据服务器响应类型执行所有必要的反序列化任务。因此,您如果您想手动反序列化响应,只需要添加Accept标头。例如,只需要这些行来发出带有JSON文字的请求:varrequest=newRestRequest("address/update").AddJsonBody(updatedAddress);varresponse=awaitclient.PostAsync(请求);响应使用Execute或ExecuteAsync时,您将获得一个IRestResponse的返回实例,其Content属性包含字符串形式的响应。您可以在那里找到其他有用的属性,如StatusCode、ContentType等等。如果请求不成功,您将收到IsSuccessful属性设置为false的响应以及ErrorException和ErrorMessage属性中描述的错误。使用typeExecute或ExecuteAsync时,您将获得一个IRestResponseback实例,它与IRestResponse的后实例相同,但还包含带有反序列化响应的TData属性。Get和GetAsync等扩展不会返回所有IRestResponse,而只会返回反序列化的响应。null如果出现问题,您可能会回来并很难理解问题所在。因此,在使用类型化扩展方法时,建议将IRestClient.ThrowOnAnyError属性设置为true。这样,您就可以告诉RestSharp在出现问题时抛出异常。然后您可以将调用包装在try/catch块中并相应地处理异常。