我一直在研究Java/Jersey中的小型Web服務,它從XML文件中包含的客戶端讀取用戶信息列表。我目前在所有這些功能中除了一個方面外:在URI中使用多個參數來表示拉取多組用戶信息或多組客戶端信息。我有一個當前有效的版本,但不是最好的方式,也不是項目描述所要求的。在Java中以REST風格處理多個參數
目前,我的代碼如下所示:
@Path("Client/{client}/users")
public class UserPage
{
@GET
@Produces(MediaType.TEXT_HTML)
public String userChoice(@PathParam(value = "client") final String client)
{****Method here which handles a list of 'users'****}
@GET
@Path("{name}")
@Produces(MediaType.TEXT_HTML)
public String userPage(@PathParam(value = "client") final String client, @PathParam(value = "name") final String name)
{****Method here which handles 'user' information****}
第一種方法是從「{}客戶」的URI表示的「客戶」處理用戶的列表。第二種方法在URI中傳遞由「{name}」表示的「用戶」信息。兩者都會以一個參數運作。目前,爲了處理多個'用戶',我將「{name}」逗號分隔爲「Client/Chick-Fil-A/users/Phil,Bradley」。我可以在使用@PathParam並解析後創建這些'用戶'的數組,但我認爲這不是處理這種情況的最佳方式,項目描述需要不同的東西。
有沒有一種方法可以通過格式爲「Client/Chick-Fil-A; cd = Phil,Bradley」的URI完成相同的任務? (The; cd =是什麼給了我最大的麻煩。) 我還需要能夠將這種格式用於多個客戶端,即「Client; cd = Chick-Fil-A,Subway/users; cd = Phil,Bradley 」。
編輯:澄清項目: 客戶信息包含在6個單獨的文件中。這些文件中的每一個都具有相同的3個用戶(這是有效的概念驗證)。我需要能夠提取不同的信息子集,例如,McDonalds和Chick-Fil-A的用戶Phil,或McDonalds的用戶Phil和Peter,或所有客戶的名爲Peter的用戶等。
儘管如此,在我看來這不會影響我的目的。我需要能夠從多個客戶端訪問多個用戶,而這些查詢似乎沒有被這些查詢處理。 – ZKSteffel 2011-05-25 19:24:04
哦,我明白了,如何將客戶端名稱移動到查詢參數呢? 所以你有類似/ users?company =&user = ? –
Alvin
2011-05-25 19:33:54
在與我的項目中的其他人交談之後,我們決定儘量遠離查詢參數。他們可能會爲這個特定的代碼工作,但正如我所提到的,這個代碼更像是一個概念證明。我們要編寫的實際代碼會更復雜,因此URI中的查詢將變得過於複雜。我更期待更有效地使用@PathParam,因爲@MatrixParam僅適用於URI的最後一部分。 – ZKSteffel 2011-05-25 21:11:37