ServiceStack: RESTful Resource Versioning

Ich habe vorgelesenVorteile von nachrichtenbasierten Webdiensten Artikel und frage mich, ob es einen empfohlenen Stil / eine empfohlene Vorgehensweise für die Versionierung von Ressourcen in ServiceStack gibt? Die verschiedenen Versionen können unterschiedliche Antworten liefern oder unterschiedliche Eingabeparameter im Anforderungs-DTO aufweisen.

Ich neige zu einer Versionierung vom Typ URL (z. B. / v1 / movies / {Id}), habe jedoch andere Vorgehensweisen erlebt, mit denen die Version in den HTTP-Headern festgelegt wurde (z. B. Inhaltstyp: application / vnd.company.myapp-v2) ).

Ich hoffe, dass ein Weg funktioniert, der mit der Metadatenseite funktioniert, aber nicht so sehr, wie ich bemerkt habe, dass die einfache Verwendung der Ordnerstruktur / des Namensraums beim Rendern von Routen gut funktioniert.

Zum Beispiel (wird nicht direkt auf der Metadatenseite gerendert, funktioniert aber ordnungsgemäß, wenn Sie die direkte Route / URL kennen.)

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

Code

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

und entsprechende Leistungen ...

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

Antworten auf die Frage(3)

Ihre Antwort auf die Frage