0

我正在使用带有 RESTEasy 的 JAX-RS。

我想知道我们是否可以仅通过查询参数的顺序和数量来表示不同的资源?

例如

/customer/1234
/customer?id=1234
/customer?name=James

我可以创建三种不同的方法,例如

@Path("customer/{id}")
public Response get(@PathParam("id") final Long id) {
..
}

@Path("customer?id={id}")
public Response get(@QueryParam("id") final Long id) {
..
}

@Path("customer?name={name}")
public Response get(@QueryParam("name") final String name) {
..
}

这行得通吗,我可以通过区分这样的路径来调用不同的方法吗?

谢谢

4

1 回答 1

1

这是一个有效的@Path

@Path("customer/{id}")        // (1)

这些不是:

@Path("customer?id={id}")     // (2)
@Path("customer?name={name}") // (3)

它们是相同的,因为归结为

@Path("customer")

你可以使用它。

所以你可以(1)and 之一(2)(3)。但你不能同时拥有(2)(3)

@QueryParam参数不是@Path. _ 您可以像在方法签名中那样访问它们,但不能将 JAX-RS 的路由基于它们。

编辑:

您可以编写一种同时接受idnameas 的方法@QueryParam。这些查询参数是可选的。

@Path("customer")
public Response get(@QueryParam("id") final String id,
                    @QueryParam("name") final String name) {
    // Look up the Customers based on 'id' and/or 'name'
}
于 2012-11-02T15:19:06.257 回答