То, что вы называете одиночными API REST, можно назвать конкретным набором ресурсов или ресурсов REST API . Вы также можете посмотреть на это как на функциональность REST API . Как и любое программное обеспечение, весь пакет обновляется / обновляется, а не отдельные функции или ресурсы.
Ваш вопрос будет иметь смысл в контексте, где ресурсы пакета REST API являются модульными и поэтому потенциально разрабатываются и контролируются отдельно.
Тогда, насколько я вижу, основными минусами предложенного вами соглашения о присвоении имен локатора ресурсов являются:
- Для пользователя API это приведет к гораздо более сложным локаторам ресурсов, менее предсказуемым, менее запоминающимся и менее стабильным.
- Для разработчиков модулей теперь больше работы с этим контролем версий в их собственном локаторе ресурсов.
- Изменения в локаторах ресурсов становятся гораздо более частыми, поскольку существует множество обновлений модулей, поэтому приведенные выше недостатки являются экспоненциальными ...
При создании API одной из ваших основных задач является упрощение использования ...
Возможно, вы найдете лучший способ внести критические изменения или даже создать версию REST API с помощью HTTP-заголовка?
Чтобы узнать немного больше о подходе HTTP-заголовков, см. Другие ответы ниже и: https://www.troyhunt.com/your-api-versioning-is-wrong-which-is/
vnd
часть и+
синтаксис типа: чтобы указать, что это специфичный для поставщика подтипapplication/json
типа. Это именно то, для чего предназначены типы контента. Ваш ресурс доступен в нескольких форматах. Вы просите клиента выбрать формат, который он хочет. Кроме того, нет никаких причин, по которым запросы API не могут использовать стандартную семантику кэширования HTTP.Ключевым моментом является то, что если вы устанавливаете каждую конечную точку отдельно, то вы должны иметь возможность развертывать каждую конечную точку отдельно.
API обычно имеют одну версию, потому что все конечные точки находятся в одной кодовой базе и, следовательно, имеют общие зависимости и развертываются вместе.
Если вы не обновляете версию, когда вносите изменения, потому что «О, я почти уверен, что мои изменения не повлияют на это», у вас возникнут проблемы, если вы сделаете ошибку.
Кроме того, вы хотите, чтобы v1 и v2 вашего API были развернуты одновременно. Обычно это делается путем развертывания каждой версии на отдельном сервере и соответствующей маршрутизации трафика.
Если у вас нет единой версии API, это становится намного сложнее.
источник