В настоящее время я разрабатываю приложение для многосайтовых саамов с использованием asp web api. Api будет опубликован и использован сторонним приложением. Мой вопрос касается управления версиями. Я изо всех сил пытаюсь найти способ построить api, чтобы, когда я обновил api, он не сделает стороннее приложение, которое использует api, чтобы перестать работать. Я видел, что многие api добавили версию no в url. Но это означает, что я должен хранить старую версию api до тех пор, пока все сторонние приложения не будут обновлены и не будут использованы последние api. Я также должен обновить старый api, чтобы адаптироваться к изменению базы данных. Это похоже на большую работу. Как крупные компании решают эту проблему?Web Api Versioning для использования нескольких арендаторов saas
ответ
Существует непростой путь вокруг этого; вам придется выполнять работу по поддержке старых версий, пока ваши клиенты используют их.
Принятие подхода RESTful в первую очередь и предотвращение «регуляторов жира» может помочь уменьшить боль, но помимо этого каждый старый вызов API должен будет вызывать на новый уровень обслуживания и должен будет возвращать результаты в формате ваши клиенты ожидают.
Я изо всех сил пытаюсь найти способ построить api, так что, обновив api, он не сделает стороннее приложение, которое использует api, чтобы перестать работать. Я видел, что многие api добавили версию no в url. Но это означает, что я должен хранить старую версию api до тех пор, пока все сторонние приложения не будут обновлены и не будут использованы последние api.
Никто, абсолютно никто не исследовал, не строил, не поддерживал и не поддерживал API больше, чем NetFlix - не внешне, а внутренне. Они использовали явное управление версиями (например, URL) в своих API-интерфейсах и поддерживали несколько версий одного и того же API и заставляли своих клиентов продвигаться вперед, предоставляя стимулы (новые функции). Это также может быть встроено в ваш SLA, например. вы гарантируете поддержку конкретной версии только на 12 месяцев.
Это очень спорная тема, и вы услышите людей, предлагающих неявное управление версиями (например, по типу медиа и т. Д.). Не стесняйтесь прислушиваться к тем, но прагматизм выступает за откровенный, а пуризм - неявным.
Извините за поздний ответ. Думаю, мне нужно сделать контроллер как можно более тонким и ограничить поддержку api только на определенное время. – Reynaldi