46.3. 루트 리소스 클래스
46.3.1. 개요
루트 리소스 클래스는 RESTful 웹 서비스를 구현하는 JAX-RS의 진입점입니다. 서비스에서 구현하는 리소스의 루트 URI를 지정하는 @Path
로 장식됩니다. 해당 메서드는 리소스에 대한 작업을 직접 구현하거나 하위 리소스에 대한 액세스를 제공합니다.
46.3.2. 요구 사항
클래스를 루트 리소스 클래스가 되기 위해서는 다음 기준을 충족해야 합니다.
클래스는
@Path
주석으로 장식되어야 합니다.지정된 경로는 서비스에서 구현하는 모든 리소스의 루트 URI입니다. 루트 리소스 클래스가 해당 경로가 위젯임을 지정하고 해당 메서드 중 하나가
GET
동사를 구현하도록 지정하는 경우 위젯에서GET
이 해당 메서드를 호출합니다. 하위 리소스에서 해당 URI가 {id} 로 지정되면 하위 리소스의 전체 URI 템플릿이 위젯 /{id}이며 위젯/ 12 및 위젯 / 42 와 같은 URI에 대한 요청을 처리합니다.클래스에는 런타임이 호출할 공용 생성자가 있어야 합니다.
런타임은 모든 생성자의 매개 변수에 대한 값을 제공할 수 있어야 합니다. 생성자의 매개 변수에는 JAX-RS 매개 변수 주석으로 장식되는 매개 변수가 포함될 수 있습니다. 매개변수 주석에 대한 자세한 내용은 47장. 리소스 클래스 및 메서드에 정보 전달 에서 참조하십시오.
-
클래스 메서드 중 하나 이상이 HTTP 동사 주석 또는
@Path
주석으로 장식되어야 합니다.
46.3.3. 예제
예 46.3. “루트 리소스 클래스” 하위 리소스에 대한 액세스를 제공하는 루트 리소스 클래스를 표시합니다.
예 46.3. 루트 리소스 클래스
package demo.jaxrs.server; import javax.ws.rs.DELETE; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.PUT; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.QueryParam; import javax.ws.rs.core.Response; @Path("/customerservice/") public class CustomerService { public CustomerService() { ... } @GET public Customer getCustomer(@QueryParam("id") String id) { ... } @DELETE public Response deleteCustomer(@QueryParam("id") String id) { ... } @PUT public Response updateCustomer(Customer customer) { ... } @POST public Response addCustomer(Customer customer) { ... } @Path("/orders/{orderId}/") public Order getOrder(@PathParam("orderId") String orderId) { ... } }
예 46.3. “루트 리소스 클래스” 의 클래스는 루트 리소스 클래스에 대한 모든 요구 사항을 충족합니다.
클래스는 @Path
주석으로 장식됩니다. 서비스에서 노출하는 리소스의 루트 URI는 customerservice 입니다.
클래스에는 public 생성자가 있습니다. 이 경우 간단히 인수 생성자를 사용하지 않습니다.In this case the no argument constructor is used for simplicity.
이 클래스는 리소스에 대한 4개의 HTTP 동사를 각각 구현합니다.
이 클래스는 getOrder()
메서드를 통해 하위 리소스에 대한 액세스도 제공합니다. @Path
주석을 사용하여 지정된 대로 하위 리소스의 URI는 customerservice/order/id 입니다. 하위 리소스는 Order
클래스에서 구현됩니다.
하위 리소스 구현에 대한 자세한 내용은 46.5절. “하위 리소스 작업” 을 참조하십시오.