Java Platform, Enterprise Edition (Java EE) 8
Учебник по Java EE

Назад Вперёд Содержание

Подресурсы и разрешение ресурсов времени выполнения

Вы можете использовать класс ресурсов для обработки только части запроса URI. Корневой ресурс может реализовать подресурсы, которые могут обрабатывать оставшуюся часть пути URI.

Метод класса ресурсов, аннотированный с помощью @Path, является либо методом подресурса, либо указателем подресурса.

  • Метод подресурса используется для обработки запросов к подресурсу соответствующего ресурса.

  • Указатель подресурса используется для поиска подресурсов соответствующего ресурса.

Здесь рассматриваются следующие темы:

Методы подресурсов

Метод подресурса обрабатывает HTTP-запрос напрямую. Метод должен быть аннотирован указателем метода запроса, таким как @GET или @POST, в дополнение к @Path. Метод вызывается для URI запроса, который соответствует шаблону URI, созданному путём объединения шаблона URI класса ресурсов с шаблоном URI метода.

В следующем фрагменте кода показано, как метод подресурса можно использовать для извлечения фамилии сотрудника, когда указан адрес электронной почты сотрудника:

@Path("/employeeinfo")
public class EmployeeInfo {

    public employeeinfo() {}

    @GET
    @Path("/employees/{firstname}.{lastname}@{domain}.com")
    @Produces("text/xml")
    public String getEmployeeLastName(@PathParam("lastname") String lastName) {
       ...
    }
}

Метод getEmployeeLastName возвращает doe для следующего запроса GET:

GET /employeeinfo/employees/john.doe@example.com

Указатели подресурсов

Указатель подресурса возвращает объект, который будет обрабатывать HTTP-запрос. Метод не должен быть аннотирован указателем метода запроса. Вы должны объявить указатель подресурса в классе подресурса, так как только указатели подресурсов используются для разрешения ресурсов времени выполнения.

Следующий фрагмент кода демонстрирует указатель подресурса:

// Корневой класс ресурса
@Path("/employeeinfo")
public class EmployeeInfo {

    // Локатор подресурса: получает подресурс Employee
    // по пути /employeeinfo/employee/{empid}
    @Path("/employees/{empid}")
    public Employee getEmployee(@PathParam("empid") String id) {
        // Извлечение Employee по имеющемуся в пути параметру id
        Employee emp = ...;
        ...
        return emp;
    }
}

// Класс подресурса
public class Employee {

    // Метод подресурса: возвращает фамилию сотрудника
    @GET
    @Path("/lastname")
    public String getEmployeeLastName() {
        ...
        return lastName;
    }
}

В этом фрагменте кода метод getEmployee является указателем подресурса, предоставляющего объект Employee, обслуживающий запросы для lastname.

Если ваш HTTP-запрос GET /employeeinfo/employees/as209/, метод getEmployee возвращает объект Employee с идентификатором as209. Во время выполнения JAX-RS отправляет запрос GET /employeeinfo/employee/as209/lastname в метод getEmployeeLastName. Метод getEmployeeLastName извлекает и возвращает фамилию сотрудника с идентификатором as209.


Назад Вперёд Содержание
Логотип Oracle  Copyright © 2017, Oracle и/или её дочерних компаний. Все права защищены. Версия перевода 1.0.5 (Java EE Tutorial — русскоязычная версия)