Как стать автором
Обновить

apiman.io — api-шлюз для интеграционного обмена с открытым кодом

Время на прочтение3 мин
Количество просмотров1.9K

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

Запросы нужно передавать для разных задач. Одна из них - интеграция внешних складских систем (WMS).

Основные требования к шлюзу:

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

  • Шлюз должен опознавать конкретного партнера и передавать его код (или наименование) дальше приложению внутри компании, обрабатывающему запрос. Например, код склада, выполняющего отгрузку.

  • Шлюз должен предоставлять хотя бы минимальную статистику обработанных запросов.

Продукт apiman.io был выбран по причине того, что это opensource, не имеющий каких-либо ограничений на использование.

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

С развертыванием пришлось повозиться. Потребовалось настроить Keycloak и Apiman на совместную работу (документация описывает процесс настройки не совсем понятно). Keycloak в нашем случае нужен только для доступа админа и взаимодействия компонентов самого Apiman, т.к. внешние клиенты авторизуются с использованием ключа в URL.

Сам продукт, тем не менее, по замыслу разработчиков, предполагается как система для взаимодействия нескольких ролей: админ, менеджер организации, разработчик api, разработчик на стороне партнера. Интегрировать Keycloak ради доступа админа выглядит как перебор, но без этого никак.

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

1) Организации - можно создать несколько организаций. В нашем случае пока одна.

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

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

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

Внешний адрес API выглядит примерно так: https://ваш_хост/apiman-gateway/организация/название_API/1.0?apikey=код_доступа_клиентского_приложения

4) Клиентские приложения - партнер, который использует API. Набор доступных API прописывается в виде контрактов (т.е. по сути это права доступа). Для клиентского приложения прописываем правило добавлять к заголовку код (или наименование) партнера, чтобы внутреннее приложение могло его идентифицировать как определенного партнера.

5) Шлюзы - в теории Apiman поддерживает работу через несколько шлюзов. Мы используем один шлюз.

6) Роли - позволяет сделать отдельные роли для разработчиков API и для разработчиков на стороне партнера. Не знаю, возможно ли использовать на практике, т.к. такой вариант настройки не требовался. В целом в продукт входит портал для партнеров, который нам не удалось настроить из за ошибок. Похоже портал еще не доделан разработчиками apiman (хотя может я и не прав).

7) Метрики - можно просмотреть график с количеством успешных и неуспешных запросов к каждому API в разрезе клиентских приложений.

8) Политики - некие дополнительные правила, которые можно прикреплять к плану или непосредственно к API. Например, можно прописать "Header Rewrite Policy", чтобы добавить нужный заголовок с кодом партнера. Также есть "Log Headers Policy", которая позволяет кидать заголовки запросов и ответов в лог.

Привожу скрин общего меню приложения и пунктов, которые доступны для конкретного API:

Меню администратора
Меню администратора

Вот так выглядит статистика. (В этом примере были сбои доступа к приложению по причине сетевых проблем, которые можно видеть на графике):

По результатам нескольких месяцев использования, можно сказать, что Apiman работает стабильно.

Также видно, что продукт развивают и, возможно, в ближайшем будущем его доведут до ума в части документации, а также доделают Developer Portal.

Теги:
Хабы:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

Публикации

Истории

Ближайшие события

7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань