Как обработать необязательный параметр UrlSegment с RestSharp?

2

Я использую RestSharp для своего приложения и создаю запрос, который использует параметр UrlSegment, как в следующем примере:

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", не удаляя строку "{id}" из URL (например, используя метод string.Replace())?

Попытка добавить пустое значение для параметра не работает:

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

Заранее спасибо.

Теги:
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 как пустую

  • 0
    Как я уже сказал в этом вопросе, я пытался вызвать «request.AddParameter (« id », string.Empty, ParameterType.UrlSegment);» и это не сработало. Запрос сделан для «someMethod / {id}», но я хотел, чтобы, если я передал пустой «id», окончательный URL-адрес изменился бы на просто «someMethod» (без «{id}»).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню