Member 14779968 Ответов: 1

Как можно использовать корпус переключателя, чтобы выбрать мою команду HTTP, в restsharp


Я создал универсальный метод executeAPI, который будет принимать мой httpMethod, мой запрос и basepath. Но у меня возникли некоторые проблемы с тем, как это сделать. Но проблема в том, что запрос от IRestRequest не содержит никакого метода, подобного request.get() ???

Вот что у меня есть

private static IRestResponse executeAPI(string httpMethod, IRestRequest request, string basePath)
       {
           IRestResponse response = null;


           //if its GET it will call the GET, if its POST it will call the POST...and so on
           switch (httpMethod)
           {
               case "GET":
                   response = request.get(basePath); //returns response
                   break;
               case "POST":
                   response = request.post(basePath); //returns response
                   break;
               case "PUT":
                   response = request.put(basePath); //returns response
                   break;
               case "DELETE":
                   response = request.delete(basePath); //returns response
                   break;

               default:
                   Console.WriteLine("Please pass the correct http Method...");
                   break;
           }

           return response;
       }


Что я уже пробовал:

Я знаю, что они есть
request.Method = Method.GET;
но как я могу использовать это в моем случае коммутатора с базовым путем

F-ES Sitecore

Никогда не использовал RestSharp но похоже вы используете метод Execute

https://visualstudiomagazine.com/articles/2015/10/01/consume-a-webapi.aspx

1 Ответов

Рейтинг:
1

Richard Deeming

То IRestRequest не содержит никаких методов для выполнения запроса. Вам понадобится IRestClient пример для этого.

private static IRestResponse executeAPI(IRestClient client, string httpMethod, IRestRequest request, string basePath)
{
    Method method;
    if (!Enum.TryParse(httpMethod, out method))
    {
        throw new ArgumentException("Invalid HTTP method.", nameof(httpMethod));
    }
    
    request.Method = method;
    request.Resource = basePath;
    return client.Execute(request);
}


Member 14779968

хорошо, у меня есть вопрос, так как я возвращаю метод executeAPI в другом методе под названием getResponse (), который я использовал, чтобы получить свой ответ в моем get и post вызове, мне придется добавить экземпляр IRestClient, чтобы сделать мой getResponse() и мой GET вызов также. Просто интересно, как я буду устанавливать клиент и httpMethod, когда я вызываю свой метод doGet, так как это строка

Вот мой метод getResponse

закрытый статический метод GetResponse IRestResponse(строка httpMethod, IRestRequest запросу клиента IRestClient, строку базового маршрута)
{
return executeAPI(httpMethod, request, client, basePath);
}

а вот мой метод Get

публичный статический doget с IRestResponse(строки "contentType", строка значений параметров baseuri, строку базового маршрута,
строки маркер, словарь и Л;строка, string=""&ГТ; paramsMap)
{
if (setBaseURI(baseURI))
{
IRestRequest request = sendRequest(contentType, token, paramsMap);
возвращение метода GetResponse("вам", "запрос", базового маршрута);
}
возвращать null;

}


//В настоящее время вызываю свой метод GET следующим образом
[Тест]
общественного недействительными getAccountImageTest2()
{
Ответ IRestResponse = BaseServiceCall.методом doget(базовый, базового маршрута,маркер, нуль);
int statusCode = (int)ответ.свойство statusCode;
Утверждать.AreEqual(ответ.Состояния, состояния);
}

Richard Deeming

Если вы хотите выполнить запрос, вы должны иметь IRestClient объект. Если это не поле или свойство объекта, содержащего метод, то вам придется передать его в качестве параметра.