使用ServiceStack,我正在寻找通过以类似于OData的方式编写URL来访问相关服务的方法。
OData示例将是
之类的网址http://localhost:8080/owind.svc/Categories(2)/Products
这将找到与第2类相关的所有产品。
ServiceStack的一个等效示例似乎是您要为ProductService创建一个Request DTO并设置如下所示的路由:
[Route("/Products")]
[Route("/Products/{Id}")]
[Route("/Categories/{Category}/Products")]
public class Products
{
public string Id { get; set; }
public string Category { get; set; }
}
(忽略提到的问题分离here,上述属性至少清楚地说明了我的要求。)
然后在ProductService中,您支持通过主键或外键查找产品。我在ServiceStack.Northwind.ServiceModel示例项目的Northwind.ServiceModel.Operations.Orders类中看到了这些行中的某些内容。
所以我想知道,这是在ServiceStack中做这种事情的最佳和最具扩展性的方式,还是有一些我缺少的捷径?考虑创建支持数百个表的服务,如果存在某种快捷方式,如果没有附加字符串,则可能会有所帮助。
我可以想象一个系统,您可以根据DTO中的任何内容自动生成路径,但您需要从DTO属性名称(通常是单数)到路由(通常是复数)进行映射。
不知道是否可以设想超出一个等级......例如
.../Employee/1/Orders/Customers
这将使您获得与员工#1签订订单的每位客户。大规模手动实施这一概念似乎令人望而却步。不确定是否存在支持或反对的SOA参数,但这也很好。
为了清楚起见,不应该假设底层数据存储或访问库。