Я реализую простой поток API, который включает в себя роль шлюза для нескольких вышестоящих API.
изображение, демонстрирующее поток
По сути, клиент предоставляет токен к этой конечной точке, сервер делает несколько последовательных вызовов API, собирает кучу информации из последнего вызова и возвращает ее.
Мы получаем токен и go до Upstream API 1
, получая обратно связка Objects
, связанная с этим токеном. Теоретически может быть возвращено неограниченное количество Objects
.
Затем мы разделяем идентификаторы каждого Object
и go до Upstream API 2
с разделенными запятыми ObjectIDs
, чтобы получить далее MetaInformation
на всех Objects
.
. Этот MetaInformation
может быть не уникальным для каждого Object
, поэтому мы можем получить в любом месте от 1 до числа Objects
MetaInformation
назад.
Тогда мы собираемся go к третьему API с разделенной запятой MetaInformationIDs
, но этот восходящий API может занять только 10 уникальных MetaInformationIDs
, что означает, что мы не сможем собрать информация, которую ожидает клиент. Поэтому мы можем выбросить случай сбоя на этом этапе, не выполняя запрос на сбой восходящего потока, но какой статус HTTP уместно использовать?
Не похоже, что клиент сделал неверный запрос, так как у него не было бы возможности узнать количество уникальных MetaInformationIds
на тот момент, но мы получили бы получит 400
статус, в котором мы должны сделать запрос с> 10 MetaInformationIds
.
Есть идеи?
РЕДАКТИРОВАТЬ: я забыл упомянуть для контекста, что восходящий API намеревается обновить в в будущем будет поддерживаться> 10 уникальных идентификаторов, поэтому было решено, что пока решение с несколькими запросами для этого API не стоит. Я искренне согласен с тем, что это неоптимальное решение.