Как бы вы структурировали кодовую базу, использующую несколько версий одного и того же API? ⇐ Android
Как бы вы структурировали кодовую базу, использующую несколько версий одного и того же API?
Изобразим, что у нас есть некоторое оборудование и API, версия которого зависит от версии операционной системы. Если операционная система обновлена, есть вероятность, что API изменился (конечные точки изменились, были удалены, URL-адрес переименован, ответ изменился, для тела запроса требуются новые параметры и т. д.).
Вы являетесь пользователем этого API, и вашей конечной целью является обратная совместимость (поддержка любой версии оборудования в вашем продукте).
[*]
Как бы вы использовали такой API?
[*]
Выполнить версию каждой конечной точки с запросом/ответом отдельно и написать обертку (антикоррупционный уровень) вокруг каждой из них?
[*]
Создать своего рода «сопоставитель запросов API», который формирует ваш запрос на основе версии API?
[*]
Случаи использования версий?
[*]
Внедрить способ выполнения конкретного запроса к определенным компонентам на основе версии API в корне композиции?
В настоящее время я разрабатываю варианты использования и в зависимости от версии API внедряю разные версии вариантов использования в определенные компоненты в корне композиции. Я также проверяю конечные точки и ответы на запросы версий, помещая другую версию конкретной конечной точки в отдельный пакет/каталог и присваивая ей имя в зависимости от версии API.
Управление версиями вариантов использования утомительно, поскольку одна конечная точка может использоваться в нескольких вариантах использования, поэтому, если она изменится, мне придется создавать новые версии для нескольких вариантов использования.
Очевидным решением было бы создать оболочку вокруг вызовов API, которая скрывает изменения и больше не учитывает варианты использования версий, но что, если конечная точка была удалена? добавлены новые параметры и т.д.? Мы не можем написать абстракцию вокруг такого динамического API.
Изобразим, что у нас есть некоторое оборудование и API, версия которого зависит от версии операционной системы. Если операционная система обновлена, есть вероятность, что API изменился (конечные точки изменились, были удалены, URL-адрес переименован, ответ изменился, для тела запроса требуются новые параметры и т. д.).
Вы являетесь пользователем этого API, и вашей конечной целью является обратная совместимость (поддержка любой версии оборудования в вашем продукте).
[*]
Как бы вы использовали такой API?
[*]
Выполнить версию каждой конечной точки с запросом/ответом отдельно и написать обертку (антикоррупционный уровень) вокруг каждой из них?
[*]
Создать своего рода «сопоставитель запросов API», который формирует ваш запрос на основе версии API?
[*]
Случаи использования версий?
[*]
Внедрить способ выполнения конкретного запроса к определенным компонентам на основе версии API в корне композиции?
В настоящее время я разрабатываю варианты использования и в зависимости от версии API внедряю разные версии вариантов использования в определенные компоненты в корне композиции. Я также проверяю конечные точки и ответы на запросы версий, помещая другую версию конкретной конечной точки в отдельный пакет/каталог и присваивая ей имя в зависимости от версии API.
Управление версиями вариантов использования утомительно, поскольку одна конечная точка может использоваться в нескольких вариантах использования, поэтому, если она изменится, мне придется создавать новые версии для нескольких вариантов использования.
Очевидным решением было бы создать оболочку вокруг вызовов API, которая скрывает изменения и больше не учитывает варианты использования версий, но что, если конечная точка была удалена? добавлены новые параметры и т.д.? Мы не можем написать абстракцию вокруг такого динамического API.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение