我已经阅读了 基于消息的Web服务优势的文章,我想知道是否有推荐的样式/实践来对ServiceStack中的Restful资源进行版本控制?不同的版本可以在请求DTO中呈现不同的响应或具有不同的输入参数.
我倾向于URL类型版本控制(即/ v1/movies/{Id}),但我已经看到了在HTTP头中设置版本的其他实践(即Content-Type:application/vnd.company.myapp-v2 ).
我希望有一种方法可以使用元数据页面但不是一个需求,因为我注意到只需使用文件夹结构/命名空间在渲染路径时工作正常.
例如(这不会在元数据页面中呈现,但如果您知道直接路由/网址则执行正确)
码
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
{
...
}
}
Run Code Online (Sandbox Code Playgroud)
和相应的服务......
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)
{
...
}
}
Run Code Online (Sandbox Code Playgroud) servicestack ×1