Управление версиями API-функций Azure. Как структурировать мой код? - PullRequest
0 голосов
/ 19 февраля 2019

Я создал демонстрационное приложение для микросервисов, реализованное с помощью Azure Function Apps.Для разделения задач я создал уровень API, бизнес-уровень и уровень данных.

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

После долгих раздумий я решил использовать версию API на основе запросов для своей демонстрации.

У меня такой вопрос:

Что такоелучший способ организовать мой код для облегчения этого?Есть ли какой-либо другой способ организовать мой код, чтобы он соответствовал разным версиям, кроме использования разных пространств имен / репозиториев?

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

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 25 февраля 2019

Самым простым способом реализации управления версиями в функциях Azure является использование конечных точек.Атрибут HttpTrigger позволяет определить пользовательский маршрут, в котором вы можете установить ожидаемую версию.

// Version 1 of get users
[FunctionName(nameof(V1UserList))]
public static IEnumerable<UserModel> V1UserList(
[HttpTrigger(AuthorizationLevel.Function, "get", Route = "v1/users")]HttpRequest req, ILogger log)
{
}

// Version 2 of get users
[FunctionName(nameof(V2UserList))]
public static IEnumerable<UserModel> V2UserList(
[HttpTrigger(AuthorizationLevel.Function, "get", Route = "v2/users")]HttpRequest req, ILogger log)
{
}

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

Компонент маршрутизатора может быть реализован в Azure с использованием различных служб, таких как:

  • Прокси функции Azure : вы можете указать конечные точки в своем приложении функций, которые будут реализованы другимресурс.Эти прокси-серверы можно использовать для разбиения большого API на несколько функциональных приложений (как в архитектуре микросервиса), в то же время предоставляя клиентам единую поверхность API.
  • Управление API : Управление API Azureподдерживает импорт приложений-функций Azure в качестве новых API или добавление их в существующие API.Процесс автоматически создает ключ узла в приложении-функции Azure, которому затем присваивается именованное значение в Azure API Management.

Пример кода для API управления версиями в функциях Azure

...