如何使用RestSharp处理可选的UrlSegment参数?

问题描述 投票:2回答:1

我正在使用RestSharp作为我的应用程序,我正在创建一个使用UrlSegment parameter的请求,如下例所示:

RestClient client = new RestClient("http://some-api-url/v1.9/");
RestRequest request = new RestRequest("someMethod/{id}");
request.AddParameter("id", 123, ParameterType.UrlSegment);
var response = client.Execute(request);

假设“{id}”参数现在是可选的:如果您在没有它的情况下调用请求,则响应将是列表而不是单个值。

如果不从URL中删除“{id}”字符串(例如:使用string.Replace()方法),如何重复使用相同的请求来获取“id”参数?

尝试为参数添加空值不起作用:

request.AddParameter("id", string.Empty, ParameterType.UrlSegment);
or
request.AddParameter("id", null, ParameterType.UrlSegment);

提前致谢。

c# restsharp
1个回答
0
投票

null不是值,您可以通过以下方式声明一个空字符串:

string s = "";

使用:

request.AddParameter("id", s, ParameterType.UrlSegment);

要么

request.AddParameter("id", "", ParameterType.UrlSegment);

他们是不同的价值观。 “”是一个空字符串,这是一个空白文本框,因为文本是全部。 null不是值,并且不是空白文本框具有的文本。

要处理可选参数,您可以在方法参数中传递它们,如下所示

public IRestResponse Some_Method(string s = "")
{

    RestClient client = new RestClient("http://some-api-url/v1.9/");
    RestRequest request = new RestRequest("someMethod/{id}");
    request.AddParameter("id", s, ParameterType.UrlSegment);
    var response = client.Execute(request);
    return response;

}

然后你可以根据你要传入的值来调用它

...
string s = "123";
Some_Method(s);

这将覆盖方法参数string s = "123";

或者在没有参数的情况下保留Some_Method()它将使用string s为空

© www.soinside.com 2019 - 2024. All rights reserved.