我正在使用 jersey,jax-rs 构建一个 web 服务应用程序
我在路径“/authenticate”中有单个 jax-rs 资源文件
我有多种方法具有单独的路径,例如“/user”“/test”
@Path ("/authenticate")
public class Authenticate{
private static final Log log = LogFactory.getLog(Authenticate.class);
@QueryParam("entityId")
String entity;
@GET
@Path ("/{param}")
public Response getMsg(@PathParam ("param") String msg) {
String o = "Hello Welcome Back:"+msg;
return Response.status(200).entity(o).build();
}
@GET
@Path ("/user")
@Produces({"application/json"})
public UserDTO getUser (@Context HttpServletRequest request,
@QueryParam("userId") int userId) {
System.out.println("In Get User, User:"+userId);
System.out.println("In Get User, Entity:"+entity);
}
@GET
@Path ("/test")
@Produces({"application/json"})
public TestPOJO getTestPOJO () {
System.out.println("In Get TestPOJO");
System.out.println("In Get Test, Entity:"+entity);
return new TestPOJO();
}
}
正如泽西客户端所建议的那样,我正在使用来自客户端的单个网络资源,并使用 .path("/xxx") 从同一网络资源构建后续网络资源。
这是我创建初始 Web 资源的方式
WebResource webResource = client.resource("http://localhost:8080/Service/jaxrs/authenticate");
webResource.queryParam("entityId", securityHelper.getEntityId().toString());
以下是我随后使用网络资源的方式
MultivaluedMap<String, String> params = new MultivaluedMapImpl();
ClientResponse userRes = webResource.path("/user").queryParams(params).accept("application/json").get(ClientResponse.class);
我想为初始 webresource 分配一个 queryparam,并且我希望使用 .path() 创建的所有后续 webresources 都保留它。但这不是现在发生的。例如,在上面的代码中,当使用 path("/user") 进行调用时,“entityId”不可用。
我的想法是分配公共参数一次,webResource 的所有后续用户都不需要一次又一次地添加这些参数。有没有办法做到这一点?这种方法会奏效吗?