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();
}
}
ジャージクライアントに提案されているように、私はクライアントからの単一のWebリソースを使用しており、.path( "/ xxx")を使用して同じWebリソースから後続のWebリソースを構築しています。
これが私が最初のウェブリソースを作成する方法です
WebResource webResource = client.resource("http://localhost:8080/Service/jaxrs/authenticate");
webResource.queryParam("entityId", securityHelper.getEntityId().toString());
その後、Webリソースを使用する方法は次のとおりです
MultivaluedMap<String, String> params = new MultivaluedMapImpl();
ClientResponse userRes = webResource.path("/user").queryParams(params).accept("application/json").get(ClientResponse.class);
最初のWebリソースにqueryparamを割り当て、.path()を使用して作成された後続のすべてのWebリソースによって保持されるようにします。しかし、それは今は起こっていません。たとえば、上記のコードでは、path( "/ user")を使用して呼び出しを行った場合、"entityId"は使用できません。
私の考えは、共通のパラメーターを一度割り当てることであり、webResourceの後続のすべてのユーザーはそれらを何度も追加する必要はありません。それを行う方法はありますか?このアプローチは機能しますか?