2012-06-29 41 views
3

我正在開發一個寧靜的web應用程序。 在這個我採取的參數是userid和orderid。REST如何在URI中傳遞空路徑參數?

userid可以是null
URI是@Path("api/user/userid/order/orderid") 我的方法是,

void add(@PathParam("userid") String userId, @PathParam("orderid") String orderId); 

我想通過空值在URI userId。我試過api/user//order/1234。但是,在這種情況下,userid需要的orderId(即1234和orderIdnull值。(這是錯誤的)

我也試圖改變路徑@Path("api/user/userid: .*/order/orderid")。然而,相同的結果,以前的。

的其他方式解決,這可能是爲userid使用@QueryParam或創建userid null的另一種方法。

但我想知道是否有辦法有userIdPathParameter,而不是QueryParam和合格價值as null

+1

爲什麼用戶ID可以爲空?如果您的應用爲空,您的應用會做什麼? – Corwin01

回答

6

將URL參數設置爲null不是有效的情況。

發佈到URL api/user/userid/order/orderid說「爲此用戶創建訂單」。獲取到相同的URL將說「檢索我這個特定的訂單爲這個用戶」。兩者都是在用戶的情況下。

對於這樣的用戶的上下文之外訂單創建或檢索,只需刪除您的URL的這兩個部分...

api/order/orderid 

這將允許您創建和獲取的界限之外的訂單一個客戶。這也適用於用戶的情況。如果您發佈沒有用戶ID的訂單,則無人關心,但可以指定一個。如果您獲得訂單,它不應該關心它的用途,除非您的訂單ID在客戶中不是唯一的,但這可能不是一個好主意,但這是一個單獨的討論。