2016-03-02 3 views
1

Мы хотим создать общедоступные веб-сервисы, и мы создаем настраиваемые API. Но как изолировать, изменить и связать эти конечные точки как гиперскалированную систему?ASP.NET WebAPI URL Versioning

Мы хотим иметь:

  • https://api.domain.tld/v1/..
  • https://api.domain.tld/v2/..
  • https://api.domain.tld/latest/..
  • https://api.domain.tld/bosch/v1/..

или

  • https://domain.tld/api/v1/..
  • https://domain.tld/api/v2/..

Все конечные точки должны быть изолированы. За конечной точкой, например https://domain.tld/api/v2/.., существует не менее 3 экземпляров ASPAP WebAPI. Мы не хотим отделять управление версиями пространствами имен внутри проекта WebAPI и использовать внутренние конфигурации маршрутов для решения этой проблемы.

Мы хотим, чтобы это поведение было на высоте, а также на Azure. Есть ли какие-либо рекомендации или примеры лучшей практики и конфигурации?

Я мог найти только одну тему здесь (How to version and configure WebApi with multiple aliases), которая очень старая и ответа нет.

ответ

1

Я всегда использую версию как маршрут апи, как вы так:

https://domain.tld/api/v1/.. 
https://domain.tld/api/v2/.. 

, который всегда работал хорошо, но и другие параметры использования URL, которые я нахожу, чтобы быть менее явным:

Visual Studio Team Services - API

Я просто не рекомендую вам идти с этим рисунком:

https://api.domain.tld/latest/.. 
https://api.domain.tld/bosch/v1/.. 

Было бы вы сделать вас API выглядеть немного неаккуратно, но это может иметь смысл, если вы используете логические услуги в вашем API:

https://api.domain.tld/service1/v1 
https://api.domain.tld/service1/v2 
https://api.domain.tld/service2/v1 
+0

Спасибо за ваш ответ. Но вопрос о том, как сопоставить вложенные папки для отдельных экземпляров, остается открытым. Например, 'https: // api.domain.tld/service1/v1' является экземпляром3 на сервере1 и' https: // api.domain.tld/service1/v2' должен быть экземпляром9 на сервере17. Ответственность за это несет балансировщик нагрузки? – PeterLiguda

+0

И логическое разделение для настраиваемых API-интерфейсов будет «https: // api.domain.tld/bosch/userservice/v1'' https: // api.domain.tld/bosch/orderservice/v3', но это оставляет меня здесь с та же проблема: как сопоставить вспомогательные каталоги для служб. – PeterLiguda

+0

Зачем вам нужен баланс нагрузки? Это просто веб-api-отображения, о которых мы говорим. – Marco

Смежные вопросы