46.3. 루트 리소스 클래스
46.3.1. 개요
루트 리소스 클래스는 RESTful 웹 서비스가 구현된 Cryostat-RS의 진입점입니다. 서비스에서 구현된 리소스의 루트 URI를 지정하는 @Path
로 데코레이드됩니다. 해당 메서드는 리소스에 대한 작업을 직접 구현하거나 하위 리소스에 대한 액세스를 제공합니다.
46.3.2. 요구 사항
클래스가 루트 리소스 클래스가 되려면 다음 기준을 충족해야 합니다.
클래스는
@Path
주석을 사용하여 데코레이팅해야 합니다.지정된 경로는 서비스에서 구현한 모든 리소스에 대한 루트 URI입니다. 루트 리소스 클래스가 해당 경로가 위젯 임을 지정하고 해당 메서드 중 하나가
GET
동사를 구현하는 경우 위젯 의GET
에서 해당 메서드를 호출합니다. 하위 리소스가 해당 URI를 {id} 로 지정하는 경우 하위 리소스의 전체 URI 템플릿은 widgets/{id} 이며 위젯 /12 및 위젯 /42 와 같은 URI에 대한 요청을 처리합니다.클래스에는 런타임이 호출되려면 공용 생성자가 있어야 합니다.
런타임은 모든 생성자의 매개 변수에 대한 값을 제공할 수 있어야 합니다. 생성자의 매개 변수에는 Cryostat-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 입니다.
클래스에는 공용 생성자가 있습니다. 이 경우 단순화를 위해 인수 생성자가 사용되지 않습니다.
클래스는 리소스에 대한 네 가지 HTTP 동사를 각각 구현합니다.
또한 클래스는 getOrder()
메서드를 통해 하위 리소스에 대한 액세스를 제공합니다. @Path
주석을 사용하여 지정된 하위 리소스의 URI는 customerservice/order/id 입니다. 하위 리소스는 Order
클래스에 의해 구현됩니다.
하위 리소스 구현에 대한 자세한 내용은 46.5절. “하위 리소스 작업” 을 참조하십시오.