2014-06-25 49 views
-2

新來ServiceStack。我設置了一些服務,許多工作正常。然而,我有一個獲取請求,由於某種原因不打我的服務。我可以打一個Get返回列表,但不是服務返回一個特定的ID。郵遞員電話只是返回OK狀態。ServiceStack服務的GetRequest不起作用

這裏是我的要求類

[Route("/InspectorIDRequest/{InspectorID}", Verbs = "GET")] 
public class GetInspectorIDRequest 
{ 
    public int InspectorID { get; set; } 
} 

頂端方法在我的服務一起 通話作品首次獲得的點擊與呼叫

http://localhost:50238/Inspector 

第二個GET永遠不會用電話打

http://localhost:50238/InspectorIDRequest/?InspectorID=2 

這裏是我的服務

// Returns a list of Inspectors to the user given a GetInspectorsRequest (which is empty) 
    public List<Inspector> Get(GetInspectorRequest request) 
    { 

     InspectorDataWorker pdp = new InspectorDataWorker(Db); 
     return pdp.GetInspectorList(); 
    } 

    // Return a single Inspector given their InspectorID 
    public Inspector Get(GetInspectorIDRequest request) 
    { 
     InspectorDataWorker pdp = new InspectorDataWorker(Db); 
     return pdp.GetInspectorByID(request.InspectorID); 
    } 

感謝您的幫助!

回答

1

路由http://localhost:50238/Inspector不符合您的路由定義:

[Route("/InspectorIDRequest/{InspectorID}", Verbs = "GET")] 

您可以添加一個新的匹配路由呢,即:

[Route("/InspectorIDRequest")] 

或者,您可以修改現有的路線,讓與兩條路線匹配的通配符路線,即:

[Route("/InspectorIDRequest/{InspectorID*}")] 

有關rou的更多信息婷是Routing wiki

+0

謝謝@mythz。請閱讀Wiki。難以將路由與服務關聯,然後關聯到DataWorker方法。我希望我現在有更好的理解。例如,如果我有當前請求 –

+0

謝謝@mythz。請閱讀Wiki。難以將路由與服務關聯,然後關聯到DataWorker方法。我希望我現在有更好的理解。例如,如果我有當前的獲取檢查器請求返回所有檢查器的列表。我可以添加一個包含{FirstName *}的路線,然後將FirstName屬性包含到請求中。那麼在目前返回完整列表的服務中,如果有Req參數存在,我可以改變它來調用不同的Dataworker方法嗎?這是最佳做法還是應該將服務分開? –

+0

@markh結帳上[設計一個基於消息的API的](http://stackoverflow.com/a/15941229/85785)這個前面的回答。我建議根據響應類型和調用語義來拆分服務,例如我會分開返回多個單一結果的服務。此外,我會盡量減少通配符的使用,他們是貪婪的設計,並可能比你想要的更多的路線。 – mythz