REST如何在URI中传递空路径参数?

naw*_*waz 3 java rest jax-rs

我正在开发一个安静的webapp.在这里,我采用的参数是userid和orderid.

useridnull.
URI是@Path("api/user/userid/order/orderid") 我的方法是,

void add(@PathParam("userid") String userId, @PathParam("orderid") String orderId);
Run Code Online (Sandbox Code Playgroud)

我想userId在URI中传递null值.

我试过了api/user//order/1234.但在这种情况下,userid取值orderId(即1234并且orderIdnull.(这是错误的)

我也试过改变路径@Path("api/user/userid: .*/order/orderid").然而与之前的结果相同.

其他方式解决,这可能是使用@QueryParamuserid或创建的另一种方法userid null.

不过,我想知道是否有办法有userId作为PathParameter,而不是QueryParam和传递价值useridnull

Jes*_*ebb 6

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

发布到URL时api/user/userid/order/orderid会说"为此用户创建订单".GET到同一个URL会说"检索我这个用户的特定订单".两者都在用户的上下文中.

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

api/order/orderid
Run Code Online (Sandbox Code Playgroud)

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