Jersey JAX-RS использование @QueryParam

В JAX-RS сервисе с использованием @QueryParam можно получить параметры из строки GET-запроса, например, из строки /hello/twoParams?first=Hello получить значение параметра first.

Код сервиса:

package ru.mydesignstudio.rest;

import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;

@Path("/hello")
public class HelloService {
  @GET
  @Path("/twoParams")
  public Response paramsFromQuery(
      @QueryParam("first") String first,
      @QueryParam("second") String second) {

    return Response.ok().entity(
        "First: " + first + ", second: " + second
    ).build();
  }

  @GET
  @Path("/dynamically")
  public Response dymanically(
      @Context UriInfo info) {

    String first = info.getQueryParameters().getFirst("first");
    String second = info.getQueryParameters().getFirst("second");

    return Response.ok().entity(
        "First: " + first + ", second: " + second
    ).build();
  }

  @GET
  @Path("/withDefault")
  public Response withDefaultValue(
      @DefaultValue("Hello") @QueryParam("first") String first,
      @DefaultValue("MyDesignStudio") @QueryParam("second") String second) {

    return Response.ok().entity(
        "First: " + first + ", second: " + second
    ).build();
  }
}

Задаем имена параметров явно

В @QueryParam можно задать явно имя получаемого параметра:

@GET
@Path("/twoParams")
public Response paramsFromQuery(
    @QueryParam("first") String first,
    @QueryParam("second") String second) {

  return Response.ok().entity(
      "First: " + first + ", second: " + second
  ).build();
}
Jersey JAX-RS использование @QueryParam
Jersey JAX-RS использование @QueryParam

Получаем параметры динамически из контекста

Контекст текущего запроса доступен через @Context UriInfo info

@GET
@Path("/dynamically")
public Response dymanically(
    @Context UriInfo info) {

  String first = info.getQueryParameters().getFirst("first");
  String second = info.getQueryParameters().getFirst("second");

  return Response.ok().entity(
      "First: " + first + ", second: " + second
  ).build();
}
Jersey JAX-RS использование @QueryParam
Jersey JAX-RS использование @QueryParam

Значение по умолчанию

Значение параметра по умолчанию можно установить с помощью @DefaultValue:

@GET
@Path("/withDefault")
public Response withDefaultValue(
    @DefaultValue("Hello") @QueryParam("first") String first,
    @DefaultValue("MyDesignStudio") @QueryParam("second") String second) {

  return Response.ok().entity(
      "First: " + first + ", second: " + second
  ).build();
}
Jersey JAX-RS использование @QueryParam
Jersey JAX-RS использование @QueryParam