3

我正在开发一个宁静的网络应用程序。在此我采用的参数是 userid 和 orderid。

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

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

我想userId在 URI 中传递空值。

我试过了api/user//order/1234。但是在这种情况下, theuserid的值是orderId(ie 1234 and orderIdis null. (这是错误的)

我也尝试将路径更改为@Path("api/user/userid: .*/order/orderid"). 然而结果和以前一样。

解决此问题的其他方法可能是使用@QueryParamforuserid或创建另一种方法 for userid null

但我想知道是否有办法让userIdasPathParameter代替QueryParam并传递useridas的值null

4

1 回答 1

7

将 URL 参数设置为 null 不是有效情况。

发布到 URLapi/user/userid/order/orderid是说“为这个用户创建一个订单”。获取相同的 URL 会说“为这个用户检索这个特定的订单”。两者都在用户的上下文中。

要在用户上下文之外进行订单创建或检索,只需删除 URL 的这两部分...

api/order/orderid

这将允许您在客户范围之外创建和获取订单。这也适用于用户的上下文。如果您发布一个没有用户 ID 的订单,没人会在意,但可以指定一个。如果你得到一个订单,它不应该关心它是给哪个客户的,除非你的 orderID 在客户中不是唯一的,但这可能不是一个好主意,但这是一个单独的讨论。

于 2012-06-29T19:17:18.070 回答