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