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)
{
...
}
}