Ответ 1
Как указано в этой документации Oracle:
@PathParam
и другие аннотации на основе параметров,@MatrixParam
,@HeaderParam
,@CookieParam
,@FormParam
подчиняются те же правила, что и@QueryParam
.@MatrixParam
извлекает информацию из URL-адреса.@HeaderParam
извлекает информацию из HTTP заголовки.@CookieParam
извлекает информацию из объявленных файлов cookie в HTTP-заголовках, связанных с cookie.
Пример (из здесь):
@Path("/books")
public class BookService {
@GET
@Path("{year}")
public Response getBooks(@PathParam("year") String year,
@MatrixParam("author") String author,
@MatrixParam("country") String country) {
return Response
.status(200)
.entity("getBooks is called, year : " + year
+ ", author : " + author + ", country : " + country)
.build();
}
}
См. следующие шаблоны URI и результат:
-
URI Pattern: "/books/2012/"
getBooks называется, год: 2012, автор: null, страна: null
-
URI Pattern: "/books/2012; author = andih"
getBooks называется, год: 2012, автор: andih, страна: null
-
URI Pattern: "/books/2012; author = andih; country = germany"
getBooks называется, год: 2012, автор: andih, страна: Германия
-
URI Pattern: "/books/2012; country = germany; author = andih"
getBooks называется, год: 2012, автор: andih, страна: Германия
Для объяснения разницы вы можете взглянуть на Параметры матрицы URL и параметры запроса