ServiceStack: управление версиями ресурса RESTful

Я прочиталПреимущества веб-сервисов на основе сообщений статья, и мне интересно, есть ли рекомендуемый стиль / практика для управления версиями ресурсов Restful в ServiceStack? Разные версии могут отображать разные ответы или иметь разные входные параметры в запросе DTO.

Я склоняюсь к управлению версиями типа URL (например, / v1 / movies / {Id}), но я видел другие практики, которые устанавливают версию в заголовках HTTP (например, Content-Type: application / vnd.company.myapp-v2 ).

Я надеюсь, что способ, который работает со страницей метаданных, но не настолько требователен, как я заметил, просто используя структуру папок / пространство имен, прекрасно работает при рендеринге маршрутов.

Например (это не отображает прямо на странице метаданных, но работает правильно, если вы знаете прямой маршрут / URL)

/v1/movies/{id} /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)
        {
        ...
        }
    }

Ответы на вопрос(3)

Ваш ответ на вопрос