46.3. 根资源类
概述
根资源类是 JAX-RS 的入口点,实施了 RESTful Web 服务。它通过 @Path
分离,用于指定由服务实施的资源的根 URI。其方法可以直接对资源实施操作,或者提供对子资源的访问权限。
要求
类必须与
@Path
注释进行解码。指定路径是服务实施的所有资源的根 URI。如果根资源类指定了其路径是 小部件,其方法之一可以实施
GET
动词,则 小部件 上的GET
会调用该方法。如果子资源指定了其 URI 是 {id},则子资源的完整 URI 模板为 widgets/{id},它将处理对 URI(如 widgets/12 和 widgets/42) 的请求。类必须具有公共构造器,供运行时调用。
运行时必须能够为所有构造器参数提供值。constructor 的参数可以包括使用 JAX-RS 参数注释来分离的参数。有关参数注解的更多信息,请参阅 第 47 章 将信息传入资源类和方法。
-
至少一个类方法必须使用 HTTP 动词注释或
@Path
注释进行解码。
示例
例 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
注释进行解码。服务公开的资源的 root URI 是 customerservice。
类具有公共构造器。在这种情况下,使用 no 参数构造器进行简单性。
类实施资源的每个四个 HTTP 动词。
类还可以通过 getOrder()
方法提供对子资源的访问权限。子资源的 URI(如 @Path
注释指定)是 customerservice/order/id。子资源由 Order
类实施。
有关实施子资源的更多信息,请参阅 第 46.5 节 “使用子资源”。