Статьи

Что такое аннотации JAX-RS?

Обзор аннотаций JAX-RS (часть 3)

Это серия из трех частей, в которой рассматривается аннотация, используемая для реализации конечных точек REST.

Во второй части аннотаций JAX-RS вы узнали о:

В этой части вы узнаете больше о аннотациях 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, то эти статьи вас заинтересуют:

Ссылка: Что такое аннотации JAX-RS? от нашего партнера JCG Алекса Тидома из блога Read Learn Code .