Извлечение данных с внешнего веб-сайта через WebAPI C # ASP.Net MVC - PullRequest
0 голосов
/ 11 октября 2019

Я большую часть времени работаю в C # WinForm и ASP.Net MVC без WebAPI ... но теперь я хотел бы выполнить заданную мне задачу WebAPI.

Я на самом деленовичок в Web API, я несколько недель отрабатывал подобное видео и прочитал несколько книг, чтобы понять его;У меня также есть солидный опыт в сетевом программировании .Net в HttpWebquest / HttpClient, но я никогда не знал, что WebAPI также использует его, пока я не прочитал об этом в книге webapi несколько недель назад.

Пожалуйста, мне нужна помощь для достижения чего-то подобного следующему:

Пример

Оба веб-сайта A & B разработаны в ASP.Net MVC, и я являюсь разработчиком веб-сайта A.

Веб-сайт A (www.mysite.com)

Веб-сайт B (https://www.cars.com/research/suv/)

Веб-сайт A должен извлекать данные с определенной страницы веб-сайта B через WebAPI.

Давайте предположим, что страница извлекает данныес веб-сайта B (https://www.cars.com/research/suv/),, и мне нужно извлечь все с этой страницы (изображение + заголовок + описание + текст + подробности для каждого элемента [транспортного средства]) ...

Разработчики для веб-сайта Bдал мне список конечных точек API + ApiSecretKey и прямую ссылку api ... и сказал, что все запросы должны вызываться через GET;

и данные, извлеченные с сайта B, должны быть размещены на сайте A в (www.mysite.com / pageVehicule).

Пожалуйста, как мне это сделать?

Ответы [ 3 ]

1 голос
/ 11 октября 2019

Предполагая, что веб-сайт B предоставляет WebAPI, у вас будет 2 варианта.

1) Извлечение данных со стороны сервера вашего проекта MVC

Поскольку вы утверждаете, что имеете опыт работы с HttpClient это было бы довольно просто (пример ожидает рассмотрения).

Шаги, которые необходимо предпринять, следующие;при загрузке вашего представления:

  • вызовите веб-интерфейс API (скорее всего, с вашего контроллера) и извлеките данные
  • добавьте эти данные в вашу модель представления
  • отобразить данные на вашей странице

пример: взят из: https://docs.microsoft.com/en-us/aspnet/web-api/overview/advanced/calling-a-web-api-from-a-net-client

Примечание: это не лучший пример: при использовании этого подхода, пожалуйста, сделайте еще несколько исследований

static HttpClient client = new HttpClient();
static async Task<Product> GetProductAsync(string path)
{   
    Product product = null;
    HttpResponseMessage response = await client.GetAsync(path);
    if (response.IsSuccessStatusCode)
    {
         var jsonString = await response.Content.ReadAsStringAsync();
         model = JsonConvert.DeserializeObject<YOUROBJECTTYPE>(jsonString);
    }
    return product;
}

Одним из преимуществ здесь является то, что аутентификация часто проще. Недостатком является то, что загрузка вашей страницы будет медленнее.

2) Извлечение данных клиента, например: из браузера

Через javascript вы сможете получать данные. Возможно с jquery или другими платформами. Обычно вы сначала загружаете страницу, а затем извлекаете данные.

Выполните следующие шаги:

  • вызовите API из javascript и получите данные
  • манипулировать страницей для отображения данных. Лучше всего это сделать с помощью jquery, react, angular, vue.js, knockout или аналогичных структур.

jQuery, например:

$.ajax({  
    type: 'GET',  
    url: 'api/Employees',  
    dataType: 'json',  
    success: function (data) {  
       //use the data here
 }});

Страница будет загружена быстро. После загрузки страницы производится вызов API. Таким образом, страница реагирует на загрузку данных в фоновом режиме.

Недостатком здесь является то, что если вам нужна аутентификация, вы не можете хранить учетные данные на стороне клиента (например, javascript), поэтому вам нужен более качественный процесс аутентификации,Возможно куки или токены JWT.

0 голосов
/ 11 октября 2019

Источник: https://www.stevejgordon.co.uk/introduction-to-httpclientfactory-aspnetcore

[Route ("api / [controller]")] открытый класс ValuesController: Controller {private readonly IHttpClientFactory _httpClientFactory;public ValuesController (IHttpClientFactory httpClientFactory) {_httpClientFactory = httpClientFactory;}

[HttpGet]
public async Task<ActionResult> Get()
{
    var client = _httpClientFactory.CreateClient();
    var result = await client.GetStringAsync("www.bWebSiteUrl.com/api/???");
    return Ok(result);
}

}

0 голосов
/ 11 октября 2019

Кажется, что существует полное отсутствие понимания того, что такое API на самом деле.

Забудьте о Веб-сайте B, ваша задача - получать данные из API. Веб-сайт B использует тот же API, скорее всего, для заполнения своих собственных страниц.

Ваша задача - выяснить, какие конечные точки предоставляют вам необходимые данные, и чтобы быть справедливым, API должен иметь некоторую документацию или Swaggerстраница, которая показывает вам, как его вызвать.

Итак:

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