刚刚学习 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 的所有订单。
例如User
ID = 2 有一个集合 10 OrderID
。所以我虽然可以构建一个这样的 URI:/MyHost/2/Orders,它会返回Order
对象集合。
我已经尝试添加另一个 DTO 对象Order
并将其绑定到这样的路由:
Route.Add<Order>("/User/{ID}/Oders")
但它不起作用。屏幕(至少在浏览器中)总是保持空白,似乎没有来自 SS 的响应。
它是一种 RESFull 的做事方式吗?它如何在 ServiceStack 中实现?您能否提供一个小代码示例(甚至是示意图)如何做到这一点?