Можно ли использовать REST API в службе Web API? - PullRequest
0 голосов
/ 07 марта 2019

Мне нужно создать «оболочку» веб-API, которая будет использоваться клиентом, но в этой службе веб-API мне фактически нужно создать запрос POST для другой службы API REST, работающей на том же сервере IIS, который выполняет некоторую работу и возвращает StringContent, который я передаю обратно клиенту через JSON HttpResponse. Это возможно? Вместо того, чтобы клиент делал прямые вызовы к самому REST API и возвращал данные, которые ему не нужны / не нужны, он вызывал бы мой сервис Web API, а я только возвращал им необходимые данные. Я знаю, что это было сделано в старой модели SOAP WSDL.

Если мне нужно, чтобы клиент передал пару параметров, которые требуются для моего POST-запроса, будет ли у меня клиент использовать запрос GET или POST?

1 Ответ

1 голос
/ 08 марта 2019

Это пример кода, который я использовал API вызова внутри другого API, используя метод POST.

  using (var client = new HttpClient())
     {
                        string query;
                        using (var content = new FormUrlEncodedContent(new Dictionary<string, string>()
                        {
                            {"username", username},
                            {"password", password}
                        }))
                        {
                            query = content.ReadAsStringAsync().Result;
                        }

                        var model = new{
                            username = txtUsername.Text,
                            password = txtPassword.Text
                        };
                        var json = JsonConvert.SerializeObject(model);
                        var user = new StringContent(json, Encoding.UTF8, "application/json");

                        using (var response = await client.PostAsync(@"http://localhost/dataagent/api/user/authenticate", user))
                        {
                            if (response.IsSuccessStatusCode)
                            {
                                var result = await response.Content.ReadAsStringAsync();
                                // handle result here

                            }
                        }
}
...