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

标签 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}”参数现在是可选的:如果在没有请求的情况下调用请求,则响应将是列表而不是单个值。

如何在不从网址中删除“ {id}”字符串的情况下(例如:使用string.Replace()方法)重用相同的请求以获取是否具有“ id”参数?

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

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


提前致谢。

最佳答案

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为空

关于c# - 如何使用RestSharp处理可选的UrlSegment参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55285266/

相关文章:

c# - 将 HttpClient 转换为 RestSharp

c# - 如何使用 RestSharp 下载文件?具体我传递给请求什么?

.net - Windows Phone 8 使用 RestSharp 请求启用 REST 的 https 托管服务

state-pattern - 状态模式可以帮助处理只读状态吗?

c# - 如何在 F# 中实现 C# 接口(interface)?

c# - Oracle.DataAccess.dll 抛出 NullReferenceException

c# - 使用 RestSharp 时,我在 POST 上收到 MethodNotFound 但响应认为它是 GET?

c# - RestSharp - 从 POSTed 响应中检索授权 token

c# - 当应用程序进程被终止/崩溃时终止子进程

c# - 筛选对象列表,其中嵌套集合与数组匹配