ジャージーベースのJavaサーブレット:
_@Path("foo")
class Foo {
@GET
@Path("bar")
public Response bar(@QueryParam("key") String value) {
// ...
}
}
_
Tomcatでは次のように問題なく呼び出すことができます。
_http://localhost:8080/container/foo/bar?key=blah
_
ただし、私のJerseyTestでは、Grizzlyを使用すると、パラメーターが適切に処理されません。このテストケースは404エラーを返します:
_@Test
public void testBar() {
final Response response = target("foo/bar?key=blah").request().get();
}
_
問題は、_foo/bar?key=blah
_のリソースに_key=blah
_を渡そうとするのではなく、_foo/bar
_という名前のリソースを探していることだと思います。 _"foo/bar"
_だけをtarget()
に渡すと、コードがnullパラメーターの例外をスローするため、500が返されます。
ジャージーテストのドキュメントといくつかの例を調べたところ、パラメーターをGETに渡すためのものである可能性のある不可解なものがいくつか見つかりましたが、パラメーターに値を割り当てているようには見えなかったため、どのように肯定的ではありませんでした私はそれを使います。
そのパラメータの値を渡すにはどうすればよいですか?
JavaDoc to WebTarget.queryParam() は、問題に対する答えを提供するはずです。基本的に、コードを次のようなものに変換する必要があります。
target("foo/bar").queryParam("key", "blah").request().get()