剛學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