ServiceStack: RESTful Resource Versioning
He leído elVentajas de los servicios web basados en mensajes. ¿Me pregunto si hay un estilo / práctica recomendados para la versión de recursos Restful en ServiceStack? Las diferentes versiones podrían generar diferentes respuestas o tener diferentes parámetros de entrada en el DTO de solicitud.
Me inclino hacia una versión del tipo de URL (es decir, / v1 / movies / {Id}), pero he visto otras prácticas que configuran la versión en los encabezados HTTP (es decir, Content-Type: application / vnd.company.myapp-v2 ).
Espero una forma que funcione con la página de metadatos, pero no es un requisito, ya que me he dado cuenta de que simplemente usar la estructura de carpetas / espacios de nombres funciona bien al renderizar rutas.
Por ejemplo (esto no se muestra correctamente en la página de metadatos pero funciona correctamente si conoce la ruta / url directa)
/ v1 / movies / {id}/v1.1/movies/{id}Código
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
{
...
}
}
y servicios correspondientes ...
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)
{
...
}
}