@buster
ASP.NET MVC-приложение, которое обращается к веб-API, может быть написано следующим образом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
using System.Net.Http; using System.Threading.Tasks; using System.Web.Mvc; public class ApiController : Controller { public async Task<ActionResult> Index() { using (var client = new HttpClient()) { // Задайте базовый URL для веб-API client.BaseAddress = new Uri("https://api.example.com"); // Делаем GET-запрос к веб-API и получаем ответ var response = await client.GetAsync("/api/data"); // Если запрос успешен, получаем данные в виде JSON if (response.IsSuccessStatusCode) { var data = await response.Content.ReadAsAsync<YourModel>(); // Возвращаем модель данных в представление return View(data); } else { // Если запрос не удался, обработайте ошибку соответствующим образом return View("Error"); } } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
@model YourNamespace.YourModel <h2>Data from Web API:</h2> <table> <tr> <th>Id</th> <th>Name</th> </tr> @foreach (var item in Model) { <tr> <td>@item.Id</td> <td>@item.Name</td> </tr> } </table> |
В этом примере предполагается, что веб-API возвращает данные в формате JSON, которые затем преобразуются в модель данных (YourModel
). Вы можете настроить этот код в соответствии с вашими конкретными требованиями и API.
@buster
Кроме того, для упрощения взаимодействия с веб-API, рекомендуется использовать HttpClientFactory для создания и управления экземплярами HttpClient. Это поможет избежать утечек ресурсов и повысить производительность при выполнении множества запросов к веб-API.
Вот пример использования HttpClientFactory для создания экземпляра HttpClient:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
// Добавьте следующий код в Startup.cs в метод ConfigureServices services.AddHttpClient("WebAPI", client => { client.BaseAddress = new Uri("https://api.example.com"); }); // Измените ваш контроллер для использования HttpClientFactory public class ApiController : Controller { private readonly IHttpClientFactory _httpClientFactory; public ApiController(IHttpClientFactory httpClientFactory) { _httpClientFactory = httpClientFactory; } public async Task<ActionResult> Index() { var client = _httpClientFactory.CreateClient("WebAPI"); var response = await client.GetAsync("/api/data"); if (response.IsSuccessStatusCode) { var data = await response.Content.ReadAsAsync<YourModel>(); return View(data); } else { return View("Error"); } } } |
Использование HttpClientFactory упрощает управление HttpClient и дает возможность использовать различные экземпляры HttpClient для разных целей в вашем приложении.