2013-05-03 62 views
1

我認爲這個問題更多地是關於Web服務的最佳實踐,不一定僅限於ServiceStack。從我在這裏和SS維基上閱讀的內容來看,實施親子實體的「推薦」方式是通過路線將其分解。ServiceStack訪問路線並避免標記的正確方法

例如:

/Users/{UserID} 
/Users/{UserID}/Entities 

其中user是登錄的用戶,和實體是他/她的物品。我正在實現jqueryui自動完成,這裏是我懷疑我沒有做正確的事情。

在腳本路徑需要的用戶ID,所以我必須手動使其在瀏覽器中,這樣記載:

type: "GET", 
url: "svc/users/**8**/entities", 
data: { "SearchTerm": request.term, "Format": 'json' }, 

這種氣味我錯了。我有會話中的UserID,我可以這樣做。所以我想知道是否有更好的方法來訪問這些對象,而不必直接將數據呈現給標記?

我做錯了嗎?

在旁註:我知道我可以將這些數據放在隱藏字段中,並通過腳本等訪問它,我只是好奇,如果有一個更好的/推薦的方式通過會話做到這一點,同時保持路線爲。

+0

我想登錄的用戶是一個特例。正如你所說,你應該從請求的另一部分獲得這些信息。我更喜歡在標題中粘貼授權信息,但是如果您在會話中使用它,也可以使用。 – Tyrsius 2013-05-03 16:02:23

+0

所以路線應該保持不變,或者我現在應該簡單一些,比如用戶/實體,並且在請求中我設置了會話中的用戶ID?這聽起來更像我應該做的。 – 2013-05-04 10:00:38

回答

2

通常,這是通過另一個端點完成的,例如Facebook使用/my/,但是你可以做任何你想做的事情。

原因是,很可能您會爲用戶返回有關自己的不同信息,而不是您與其他人分享該用戶的信息。

讓我們假裝/user/{UserId}/books返回用戶喜歡的書籍。如果我想知道某人最喜歡的書是什麼,我可能會對標題和簡要說明感興趣,但如果我想查看(並可能管理)我最喜歡的書的列表,那麼我可能需要更多信息,比如當天我添加了最喜歡的書,或我的朋友,也喜歡這本書。

所以/user/{UserId}/books回報:

{ 
    "books":[ 
     { "title":"Hary Potter", "desc":"A boy who is magic..." } 
    ] 
} 

然而/my/books回報:

{ 
    "books":[ 
     { 
       "title":"Harry Potter", 
       "desc":"A boy who is magic...", 
       "friensWhoLikeBook":[ 
        { "id":1234, "name":"Bob" } 
       ], 
       "personalCommentsAboutBookNotToBeShared":"This book changed my life..." 
      } 
    ] 
} 
+0

感謝您的澄清,/我,/自己等可能是實現這一點的最佳方式。 – 2013-05-13 07:49:38