web-dev-qa-db-ja.com

Jersey JaxRSですべてのクエリパラメータを取得するにはどうすればよいですか?

汎用のWebサービスを構築していますが、後で解析するためにすべてのクエリパラメーターを1つの文字列に取り込む必要があります。これどうやってするの?

87
Tom

@QueryParam("name")を介して単一のパラメーターにアクセスするか、コンテキストを介してすべてのパラメーターにアクセスできます。

@POST
public Response postSomething(@QueryParam("name") String name, @Context UriInfo uriInfo, String content) {
     MultivaluedMap<String, String> queryParams = uriInfo.getQueryParameters(); 
     String nameParam = queryParams.getFirst("name");
}

キーは@Contextjax-rsアノテーション 。アクセスに使用できます。

UriInfo、Request、HttpHeaders、SecurityContext、Providers

153
hisdrewness

リクエストURIの未解析のクエリ部分は、UriInfoオブジェクトから取得できます。

@GET
public Representation get(@Context UriInfo uriInfo) {
  String query = uriInfo.getRequestUri().getQuery();
  ...
}
33
glerup

受け入れられた回答にもう少し追加します。メソッドに追加のパラメーターを追加せずに、次の方法ですべてのクエリパラメーターを取得することもできます。

@Context
private UriInfo uriInfo;

@POST
public Response postSomething(@QueryParam("name") String name) {
     MultivaluedMap<String, String> queryParams = uriInfo.getQueryParameters(); 
     String nameParam = queryParams.getFirst("name");
}

ref

2
Janak