В 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(); }
Получаем параметры динамически из контекста
Контекст текущего запроса доступен через @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(); }
Значение по умолчанию
Значение параметра по умолчанию можно установить с помощью @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(); }