Каков наилучший способ создания версии веб-API WCF? - PullRequest
8 голосов
/ 16 января 2012

В настоящее время у меня есть веб-API WCF, который я разделил на две версии.Первая версия работает на api.mysite.com.Второй в настоящее время не публикуется для производства.

Я хотел бы опубликовать второй API, чтобы запросы к первой версии не прерывались.Мои идеи заключаются в добавлении заголовка x-api-version и внутренней маршрутизации запроса к указанному API.Если заголовка нет, то по умолчанию используется версия 1. Я решил добавить /v1 или /v2 в начало пути, чтобы разделить версию так, чтобы запрос к v1 или v2 мог выглядеть следующим образом:

http://api.mysite.com/v1/authentication/login
http://api.mysite.com/v2/auth/login

Единственное предостережение в том, что запросы без версии должны работать и по умолчанию иметь версию 1 (или любую другую версию, указанную мной).

Хотя это звучит хорошо (по крайней мере для меня), я не уверен в том, какой рекомендуемый способ реализации этого будет.Я знаю, что я всегда мог сделать какой-то обратный прокси, но я надеюсь, что мои решения могут быть программными.Чем меньше конфигурация, которая требуется со стороны сервера, тем лучше.Если у кого-то есть идеи или ссылки на блоги / учебные пособия, это было бы замечательно!

Заранее спасибо!

Ответы [ 2 ]

5 голосов
/ 16 января 2012

У Microsoft есть достойная статья о версиях с WCF здесь

1 голос
/ 17 января 2012

Хорошо, мне понравились ответы, которые я получил до сих пор (спасибо вам обоим), но это не совсем решило мою проблему, учитывая ограничения и цели, которые я имею с моим API. Итак, я хотел бы детализировать решение, которое нашел и планирую использовать.

Для начала я управляю версией моего API через URI. Это означает, что различные версии API будут выглядеть так:

http://api.mysite.com/authentication/login
http://api.mysite.com/v1/authentication/login
http://api.mysite.com/v2/auth/login
http://api.mysite.com/v3/auth/letmeinplease
... you get the point ...

Здесь важно отметить, что, если я не включу номер версии, то я по умолчанию вернусь к версии 1. Однако это будет моя текущая настройка, с такой же легкостью это может быть установка по умолчанию на последнюю версию, последнюю стабильную версию и т. Д. .

Вот и мы. Я создал папку, в которой будет жить приложение (wwroot/api). Внутри этой папки я создал папки для всех версий: v1, v2 и т. Д. Теперь в IIS (для меня 7.5) я создал новый проект с корнем приложения wwroot/api/v1. Затем я добавил каждую версию папки (в том числе v1) в качестве вложенного приложения. Это позволяет мне создавать версии API через URI (как показано выше), однако здесь есть одна оговорка.

Наследование Web.config действительно может быть проблемой. Итак, я позаботился о том, чтобы отключить его для всех моих версий API. Справку о том, как это сделать, можно найти здесь . За этим исключением все работает как шарм! : -)

...