我正在开发一个安静的webapp。 在这里,我采用的参数是userid和orderid。
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而orderId
为null
。(这是错误的)
我也尝试将路径更改为@Path("api/user/userid: .*/order/orderid")
。但结果与之前相同。
解决此问题的其他方法可能是@QueryParam
使用userid
或为userid null
创建另一种方法。
但我想知道是否有办法将userId
设为PathParameter
而不是QueryParam
,并将userid
的值设为null
?
答案 0 :(得分:6)
将URL参数设置为null不是有效的情况。
发布到网址api/user/userid/order/orderid
说“为此用户创建订单”。 GET到同一个URL会说“检索我这个用户的特定订单”。两者都在用户的背景下。
要在用户的上下文之外进行订单创建或检索,只需删除网址的这两部分...
api/order/orderid
这将允许您在客户范围之外创建和获取订单。这也适用于用户的上下文。如果您在没有用户ID的情况下发布订单,则无人问津,但可以指定一个。如果您获得订单,它不应该关心它是哪个客户,除非您的订单ID在客户中不是唯一的,但这可能不是一个好主意,但这是一个单独的讨论。