Я прочитал статью Преимущества веб-сервисов, основанных на сообщениях, и мне интересно, существует ли рекомендованный стиль/практика для управления версиями. Исправленные ресурсы в ServiceStack? Различные версии могут отображать разные ответы или иметь разные входные параметры в запросе DTO.
Я склоняюсь к типу управления версиями URL (т.е./v1/movies/{Id}), но я видел другие методы, которые устанавливают версию в заголовках HTTP (например, Content-Type: application/vnd.company. MyApp-v2).
Я надеюсь, что это будет работать со страницей метаданных, но не столько требованием, сколько я заметил, просто используя структуру папок /namespacing отлично работает при рендеринге маршрутов.
Например (это не отображается правильно на странице метаданных, но выполняется правильно, если вы знаете прямой маршрут /URL )
- /v1/кино/{идентификатор}
- /v1.1/movies/{ID}
код
namespace Samples.Movies.Operations.v1_1
{
[Route("/v1.1/Movies", "GET")]
public class Movies
{
...
}
}
namespace Samples.Movies.Operations.v1
{
[Route("/v1/Movies", "GET")]
public class Movies
{
...
}
}
и соответствующие службы...
public class MovieService: ServiceBase<Samples.Movies.Operations.v1.Movies>
{
protected override object Run(Samples.Movies.Operations.v1.Movies request)
{
...
}
}
public class MovieService: ServiceBase<Samples.Movies.Operations.v1_1.Movies>
{
protected override object Run(Samples.Movies.Operations.v1_1.Movies request)
{
...
}
}