为什么查询参数没有到达接口?
Why query params are not reaching the interface?
我正在尝试向使用 javax.ws.rs 实现的 REST 接口发送请求并为其提供一些查询参数,但查询参数未到达接口。
发送方实现如下:
WebTarget target = webTarget.path("test").path("Testuser");
target.queryParam("a","a");
System.out.println(target.getUri());
Response response = target.request().get();
界面:
@GET
@Path("test/{username}")
public void test(
@PathParam("username") String username,
@QueryParam("a") String a) {
System.out.println("TEST here!");
System.out.println("username: " + username);
System.out.println("a: " + a);
}
发件人端的输出是没有任何查询参数的普通 URL。
接口端的输出为
TEST here!
username: Testuser
a: null
我看不出我的错误在哪里,也看不出为什么界面中没有收到 a。
您忽略了 queryParam
方法的结果。该方法不会修改现有实例 - 它 returns 一个新实例,就像 path
一样。来自文档:
Create a new WebTarget instance by configuring a query parameter on the URI of the current target instance.
只需将您的代码更改为:
WebTarget target = webTarget.path("test").path("Testuser").queryParam("a", "a");
我正在尝试向使用 javax.ws.rs 实现的 REST 接口发送请求并为其提供一些查询参数,但查询参数未到达接口。
发送方实现如下:
WebTarget target = webTarget.path("test").path("Testuser");
target.queryParam("a","a");
System.out.println(target.getUri());
Response response = target.request().get();
界面:
@GET
@Path("test/{username}")
public void test(
@PathParam("username") String username,
@QueryParam("a") String a) {
System.out.println("TEST here!");
System.out.println("username: " + username);
System.out.println("a: " + a);
}
发件人端的输出是没有任何查询参数的普通 URL。
接口端的输出为
TEST here!
username: Testuser
a: null
我看不出我的错误在哪里,也看不出为什么界面中没有收到 a。
您忽略了 queryParam
方法的结果。该方法不会修改现有实例 - 它 returns 一个新实例,就像 path
一样。来自文档:
Create a new WebTarget instance by configuring a query parameter on the URI of the current target instance.
只需将您的代码更改为:
WebTarget target = webTarget.path("test").path("Testuser").queryParam("a", "a");