【发布时间】:2012-12-23 14:58:09
【问题描述】:
刚刚学习 REST 和 ServiceStack 并寻求建议如何构建此示例架构:
我有一个带有这些字段的 User 对象:
public class User
{
public string ID {get;set;
public string Name {get;set;}
public List<int> OrderID {get;set;} // inner collection
// all other fields
}
我有一个Service 类:
public class UserService : Service
{
public List<User> Get(User UserRequest)
{
List<User> lstUsers = // Somehow polulate a collection of Users
return lstUsers;
}
// Other functions
}
和一个 AppHost 文件(目前自托管)
public UserHost : AppHostHttpListenerBase
{
public override void Configure(Funq.Container container)
{
Routes
.Add<User>("/UserInfo")
.Add<User>("/User/{ID}");
}
}
一切正常:客户端(浏览器)发送一个空的“用户”请求并接收User 对象的集合,但我需要添加的是获取特定的User 请求。例如,我想接收(并更改)具有特定User ID 的所有订单。
例如,ID = 2 的 User 有 10 个 OrderID 的集合。所以我虽然可以构建一个这样的 URI:/MyHost/2/Orders,它会返回 Order 对象的集合。
我已经尝试添加另一个 DTO 对象 Order 并将其绑定到这样的路由:
Route.Add<Order>("/User/{ID}/Oders")
但它不起作用。屏幕(至少在浏览器中)总是保持空白,并且似乎没有来自 SS 的响应。
这是一种 RESFull 的做事方式吗?它如何在 ServiceStack 中实现?您能否提供一个小代码示例(甚至是示意图)如何做到这一点?
【问题讨论】:
标签: c# rest servicestack