如何复用RestSharp的RestClient实例处理不同基础URI的请求?
在RestSharp中复用RestClient并直接使用完整请求URI
你完全可以在RestSharp中实现类似操作:创建不指定基础URI的RestClient实例复用,同时在RestRequest中直接传入完整请求URI。
1. 创建复用的RestClient实例
和你的HttpClient用法类似,你可以初始化一个不带基础URI的RestClient,并配置连接池相关选项(比如连接生命周期):
class Example { private static readonly RestClient client; static Example() { var options = new RestClientOptions { ConfigureMessageHandler = _ => new SocketsHttpHandler { PooledConnectionLifetime = TimeSpan.FromMinutes(15) } }; client = new RestClient(options); } }
2. 在RestRequest中使用完整绝对URI
虽然RestRequest的构造函数参数名为resource,注释标注是相对资源URL,但实际上它支持直接传入完整的绝对URI。RestSharp会自动识别这是绝对地址,不会尝试和基础URI拼接。
直接在构造函数中传入完整URI的示例:
private void MakeRestRequest() { // 直接传入完整绝对URI到RestRequest构造函数 var request = new RestRequest("https://www.example.com/uri", Method.Get); var response = client.ExecuteAsync(request).Result; // 后续处理逻辑 }
另外,你也可以通过RestRequest的AbsoluteUri属性来设置完整URI:
private void MakeRestRequestWithAbsoluteUri() { var request = new RestRequest(); request.AbsoluteUri = "https://www.example.com/uri"; request.Method = Method.Get; var response = client.ExecuteAsync(request).Result; // 后续处理逻辑 }
补充说明
RestSharp的RestRequest设计上兼容相对和绝对两种URI形式,当传入的resource是绝对URI时,会优先使用该地址,忽略RestClient的基础URI(如果有的话)。所以你完全可以像使用HttpClient+HttpRequestMessage那样,复用同一个RestClient实例发送不同完整URI的请求。
内容的提问来源于stack exchange,提问作者subject-q
相关产品推荐
相关产品推荐

