Как я могу использовать несколько параметризованных веб-API с помощью контроллера MVC - PullRequest
0 голосов
/ 14 декабря 2018

Я потребляю web api , используя MVC-контроллер , для которого требуется два параметра .На основании параметров данные будут возвращены в формате Json.Как я могу использовать API с двумя параметрами?api-url: http://www.example.com/apiname/methodname/ Параметры: param1 param2

подробности api-ключа: api-ключ: x-api-key Значение api-ключа: apikeyvalue

пример: http://www.example.com/apiname/methodname/param1/param2

using (var client = new HttpClient())
        {
client.BaseAddress = new Uri(@"apiurl");  

client.DefaultRequestHeaders.Clear();

            client.DefaultRequestHeaders.Add("x-api-key", "apikeyvalue");

            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            //HTTP GET
            var responseTask = client.GetAsync("GetAttendances");

            responseTask.Wait();



            var result = responseTask.Result;
            if (result.IsSuccessStatusCode)
            {
                var readTask = result.Content.ReadAsAsync<IEnumerable<MonitoringCallsViewModel>>();
                readTask.Wait();
            }
            else //web api sent error response 
            {
                //log response status here..

                ModelState.AddModelError(string.Empty, "Server error. Please contact administrator.");
            }
}

}

1 Ответ

0 голосов
/ 14 декабря 2018

Я не получаю много подробностей из вашего объяснения, но вы можете использовать конечную точку API двумя способами.Во-первых, API получает параметры через запрос, и вы можете установить эти переменные для запроса (URL-адреса запроса), как показано ниже.

    public static string YourUrlSetterFunc(string baseUri, int id, int categoryId)
    {
            return $"{baseUri}/endpoint-route?firstParam={firstParam}&secondPram={secondPram}";
    }

Или вы можете установить те переменные, которые не взяты из URL, и ониназывается FormData через подход метод HttpClient.Пример показан ниже.

var serializeObject = _jsonSerializer.Serialize(YourClassThatHoldsParams);
using (var requestContent = new StringContent(serializeObject, System.Text.Encoding.UTF8, "application/json"))
            {
                using (var responseMessage = await PostAsync(requestUri, requestContent))
                {
                    response = _jsonSerializer.DeSerialize<TV>(await responseMessage.Content.ReadAsStringAsync());
                }
            }

Таким образом, вы можете прочитать ответ JSON в виде строки и затем десериализовать его в объект, который вы хотите.Надеюсь, что это решит вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...