You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何复用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 23:05:12