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