ServiceStack: RESTful Resource Versioning

PrzeczytałemZalety usług internetowych opartych na wiadomościach artykuł i zastanawiam się, czy istnieje zalecany styl / praktyka do wersjonowania Restful zasobów w ServiceStack? Różne wersje mogą wyświetlać różne odpowiedzi lub mieć różne parametry wejściowe w żądaniu DTO.

Opieram się na wersjonowaniu typu URL (np. / V1 / movies / {Id}), ale widziałem inne praktyki, które ustawiają wersję w nagłówkach HTTP (tj. Content-Type: application / vnd.company.myapp-v2 ).

Mam nadzieję, że sposób działa ze stroną metadanych, ale nie tak bardzo, jak zauważyłem, po prostu użycie struktury folderów / nazw nazw działa dobrze podczas renderowania tras.

Na przykład (to nie wyświetla się bezpośrednio na stronie metadanych, ale działa poprawnie, jeśli znasz bezpośrednią trasę / adres URL)

/ v1 / movies / {id}/v1.1/movies/{id}

Kod

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

i odpowiednie usługi ...

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

questionAnswers(3)

yourAnswerToTheQuestion