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