0

RESTEasy で JAX-RS を使用しています。

クエリ パラメータの順序と数だけでパスを区別して、さまざまなリソースを表すことができるかどうかを知りたいですか?

例えば

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

たとえば、3 つの異なるメソッドを作成できますか

@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)(2)(3)(2)(3)

@QueryParamパラメータはの一部ではありません@Path。メソッドの署名で行うようにそれらにアクセスできますが、それらに基づいて JAX-RS のルーティングを行うことはできません。

編集:

とasの両方を受け入れる1 つのメソッドを記述できます。これらのクエリ パラメータはオプションです。idname@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 に答える