私は汎用の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
受け入れられた回答にもう少し追加します。メソッドにパラメーターを追加せずに、次の方法ですべてのクエリパラメーターを取得することもできます。これは、swaggerドキュメントを維持するときに役立つ場合があります。
@Context
private UriInfo uriInfo;
@POST
public Response postSomething(@QueryParam("name") String name) {
MultivaluedMap<String, String> queryParams = uriInfo.getQueryParameters();
String nameParam = queryParams.getFirst("name");
}