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

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

Вот как я структурировал приложение:

Папка Client используется для хранения сторонних клиентов веб-API, от которых приложение получает данные.

Причина, по которой я решил создать клиент для каждого веб-API, заключается в том, что он разделяет запросы на типы с использованием шаблона действий контроллера. Следование шаблону действий контроллера и использование преимуществ именованного типа httpclients сделали разработку быстрой и легкой.

Другая причина, по которой мне нравится разделять клиентов, заключается в том, что я могу предварительно настроить каждый клиент, установив DefaultHeaders в файле Startup.cs.

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

При вызове метода GetStateJurdictionData:

  1. Создает новый OpenStatesClient.
  2. Использует OpenStatesClient для вызова юрисдикций конечных точек.
  3. Проверьте статус ответа в случае успеха.
  4. Содержание ответа читается
  5. Содержимое ответа десериализуется с использованием модели Юрисдикция.
  6. Возвращает список результатов

Теперь, когда у меня есть список результатов, как мне получить данные и какой путь пользователь выберет, чтобы увидеть их?

Я решил создать служебную папку, в которой будет храниться каждый сервис API. Если есть клиент, каждый клиент будет использовать соответствующую службу для предоставления своих данных. Например, OpenStatesClient будет иметь службу API под названием OpenStates.

Папка службы используется для создания пути к нашим данным с использованием шаблона действий контроллера, который определен в файле Startup.cs.

Контроллер - это имя службы

Каждая служба имеет действия или маршруты, которые вызывают определенные методы, это можно увидеть, просмотрев файл OpenStates.cs.

Я смотрю на основной маршрут как на api/openstates, методы класса — это действия, которые определены в Startup.cs.

Приложение имеет три корневых файла, которые используются для настройки и извлечения данных приложения. Program.cs — это точка входа веб-приложения, единственное назначение класса программы — определить хост и передать управление классу Startup. Класс startup.cs выполняет все задачи инициализации, регистрирует все службы в контейнере DI и определяет конвейер промежуточного программного обеспечения.

Статья 4: https://osintiostom.medium.com/asp-net-web-api-execution-article-4-bc9f424d99b7