Как создать очередь из взаимосвязанных REST API запросов?
Имеется два независимых друг от друга REST API, для взаимосвязи которых используется/разрабатывается промежуточный сервис, который с определённым интервалом взаимодействует с ними обеими. Стоит отметить, что оба API недоступны для изменения, т.e. являются сторонними продуктами. Оба API поддерживают OpenAPI v.3.0.1.
Первое API (назовём его CAD API) по своей сути предоставляет доступ к CAD файлам/сборкам и сопутствующей информации. GUI продукта реализовано на Java.
Второе API (назовём его MES API) может взаимодействовать с физическими машинами/станками/линиями на производстве. GUI продукта реализовано на Angular v.9.1.11.
Описание проблемы
Как и у любых API, у них имеется определённая и иногда весьма запутанная логика. Например в MES API изменениe состояния сущности возможно только в определённом порядке: Draft -> Tested -> onApproval -> Approved -> Published -> Rejected -> Archived -> Deleted, т.е. после отклонения программы (Rejected) программу можно заархивировать или удалить, но отправить опять на тестирование или опубликовать не выйдет. Помимо этого некоторые состояния не могут быть установлены с помощью GUI, например состояние Tested для NC программы устанавливается конкретной физической машиной на производстве после эмуляции процесса.
Другими словами, некоторые состояния сущностей невозможно установить с помощью GUI, т.к. их ручное изменение не предполагается и приходится с помощью Swagger'а выполнять кучу взаимосвязанных запросов (иногда до 20 отдельных запросов). Bearer-аутентификация также добавляет дополнительных действий тестировщикам.
Для решения возникшей проблемы/неудобств появилась идея: т.к. у MES API имеется Angular frontend, то почему бы не использовать его? Мы не можем его (Angular frontend) изменить, но можем разработать расширение для Google Chrome DevTools и тогда:
- избавляемся от необходимости аутентификации;
- можем перехватывать все запросы к API и на их основе создавать один объект содержащий всю необходимую информацию вместо ручного выполнения запросов в Swagger;
Теперь о проблеме... Если все API запросы на Angular-frontend'e в MES API мы можем в автоматическом режиме "сливать" в один объект используя URL запросов для построения структуры объекта, то для выполнения тестов необходимо выполнять конфигурируемые очереди запросов используя получаемую информацию из запросов для построения новых. В Postman последних версий появилась похожая функциональность в виде Flows (видео на YouTube), но т.к. это ещё Beta, то багов там, как говорится, вагон и маленькая тележка. Помимо этого возникает чувство, что после выхода из beta эта функциональность перенесётся в платные версии продукта.
Как представляется решение... На странице тестируемой сущности в Angular-frontend'e тестировщик открывает панель разработчика (DevTools), переходит на вкладку расширения и либо выбирает ранее сконфигурированную очередь запросов, либо создаёт новую и запускает тест.
На данный момент: расширение для DevTools имеется, запросы к MES API перехватываются, объект автоматически собирается.
Вопрос: каким образом можно создать конфигурируемые очереди запросов к REST API? Возможно я пытаюсь изобрести велосипед с квадратными колёсами и в отрасли уже есть готовое решение/подход/способ для поставленной задачи?
P.S.: почему запросы именно конфигурируемые? Так как предполагается использование в целях тестирования, то каждый раз пересобирать/изменять расширение для Chrom'a тестировщикам сомнительное удовольствие.
UPDATE
Изобретённый велосипед, тот, что на квадратных колёсах получился довольно мерзостным и поэтому было решено не мучать разные участки тела, а использовать Postman Flows...