Обзор аннотаций JAX-RS (часть 3)
Это серия из трех частей, в которой рассматривается аннотация, используемая для реализации конечных точек REST.
Во второй части аннотаций JAX-RS вы узнали о:
- Аннотация @Path и @PathParam
- @QueryParamter Аннотация
- Аннотация @Produces
- Аннотация @Consumes
В этой части вы узнаете больше о аннотациях JAX-RS. Вы готовы? Давайте начнем.
@FormParam Аннотация
Вам может потребоваться прочитать параметры, отправленные в HTTP-запросах POST непосредственно из тела, а не сериализовать его в объект. Это можно сделать с помощью аннотации @FormParam
.
1
2
3
4
5
6
7
|
@POST @Produces (MediaType.APPLICATION_JSON) public Response saveBookF( @FormParam ( "title" ) String title, @FormParam ( "author" ) String author, @FormParam ( "price" ) Float price) { return Response.ok(bookRepository.saveBook( new Book(title, author, price))).build(); } |
@MatrixParam Аннотация
Параметры матрицы — это набор параметров запроса, разделенных точкой с запятой, а не амперсандом. Это может произойти из-за того, что значения были выбраны из поля ввода множественного выбора и задаются с помощью запроса GET, а не запроса POST. URL может выглядеть примерно так:
1
|
http: //localhost :8080 /api/books ;author=atheedom;category=Java;language=english |
Аннотация @MatricParam
используется для получения значения параметра из URI и назначения его параметру метода.
1
2
3
4
5
6
7
8
9
|
@GET @Produces (MediaType.APPLICATION_JSON) public Response getBookBy( @MatrixParam ( "author" ) String author, @MatrixParam ( "category" ) String category, @MatrixParam ( "language" ) String language) { return Response.ok( new GenericEntity<List<Book>>( bookRepository.getBookBy(author, category, language)) {}).build(); } |
Аннотация @CookieParam
Аннотация @CookieParam
позволяет вам @CookieParam
файлы cookie метода вашего ресурса, отправленные клиентом. Представьте, что вы отправили куки-файл cartId
клиентам, чтобы вы могли отслеживать корзину покупателя. Чтобы извлечь cookie из HTTP-запроса, просто аннотируйте параметр метода, которому вы хотите назначить данные cookie.
1
2
3
4
5
|
@GET @Produces (MediaType.APPLICATION_JSON) public Response getCart( @CookieParam ( "cartId" ) int cartId) { return Response.ok().build(); } |
@HeaderParam Аннотация
Аннотация @HeaderParam
используется для вставки значений заголовка HTTP-запроса в параметры метода ресурса. Вы можете думать об этом как о @Context
аннотацию @Context
для внедрения экземпляра HttpServletRequest или HttpHeaders .
1
2
3
4
5
|
@GET @Produces (MediaType.APPLICATION_JSON) public Response getReferrer( @HeaderParam ( "referer" ) String referrer) { return Response.ok(referrer).build(); } |
Аннотация @Provider
Провайдеры используются для расширения и настройки JAX-RS путем изменения поведения среды выполнения для достижения ряда целей.
Есть три типа поставщиков:
- Entity Providers
Этот тип провайдера контролирует сопоставление представлений данных, таких как JSON и XML, с их эквивалентами объектов - Провайдеры контекста
Этот тип провайдера контролирует контекст, к которому могут обращаться ресурсы с помощью аннотации @Context. - Поставщики исключений
Этот тип провайдера управляет сопоставлением исключений Java с экземпляром JAX-RS Response.
Единственное, что у них общего, — это то, что они должны быть идентифицированы аннотацией @Provider
и следовать правильным правилам объявления конструктора.
Репозиторий кода
Исходный код этой статьи находится в моем репозитории GitHub . Код для всех моих статей находится в репозитории статей ReadLearnCode .
Дальнейшее чтение
Если вам интересно больше узнать об API JAX-RS, то эти статьи вас заинтересуют:
- В управлении сбоями проверки бина обсуждается, как обрабатывать ответ клиентам, когда ввод не проходит проверку целостности данных
- Узнайте обо всех способах использования аннотации @ javax.ws.rs.core.Context
- работа с аннотациями @Consumes и @Produces , и
- Ресурсные объекты JAX-RS обсуждают, как создавать ресурсные объекты JAX-RS
Ссылка: | Что такое аннотации JAX-RS? от нашего партнера JCG Алекса Тидома из блога Read Learn Code . |