刚学REST和ServiceStack并要求建议如何构建这个示例模式:建议REST /服务设计收集“DTO”响应/请求
我有一个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中实现?并且你能提供一个简单的代码示例(甚至是示意图)如何做到这一点?
但我怎么可以检测(在功能'获取(用户UserRequest)')如果URL为/用户/ 123或/ user/123 /订单??? – Jasper
编辑回答添加更多信息。基本上/ User/123和/ User/123/Orders应该由两个diff处理。服务。一个返回用户,另一个返回订单。他们恰好分享了部分url路径。对于订单,会有另一种方法(在另一个类中)'Get(Order orderRequest)'。 – AlexD