Обзор аннотаций 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 . |