汎用のWebサービスを構築していますが、後で解析するためにすべてのクエリパラメーターを1つの文字列に取り込む必要があります。これどうやってするの?
@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");
}
キーは@Context
jax-rsアノテーション 。アクセスに使用できます。
UriInfo、Request、HttpHeaders、SecurityContext、Providers
リクエストURIの未解析のクエリ部分は、UriInfo
オブジェクトから取得できます。
@GET
public Representation get(@Context UriInfo uriInfo) {
String query = uriInfo.getRequestUri().getQuery();
...
}
受け入れられた回答にもう少し追加します。メソッドに追加のパラメーターを追加せずに、次の方法ですべてのクエリパラメーターを取得することもできます。
@Context
private UriInfo uriInfo;
@POST
public Response postSomething(@QueryParam("name") String name) {
MultivaluedMap<String, String> queryParams = uriInfo.getQueryParameters();
String nameParam = queryParams.getFirst("name");
}