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

时间:2019-03-21 16:39:14

标签: c# restsharp

我正在为应用程序使用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( )方法)?

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

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

谢谢。

1 个答案:

答案 0 :(得分: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为空