46.3. 根资源类


概述

root 资源类是实施 RESTful Web 服务的 JAX-RS 的入口点。它被解码为 @Path,用于指定服务实施的资源的根 URI。其方法可直接对资源实施操作,或提供对子资源的访问。

要求

要让类是根资源类,它必须满足以下条件:

  • 类必须使用 @Path 注释进行解码。

    指定路径是服务实施的所有资源的根 URI。如果 root 资源类指定其路径是 小部件,其方法之一实施 GET 动词,则 小部件 上的 GET 会调用该方法。如果子资源指定其 URI 为 {id},则子资源的完整 URI 模板是 widgets/{id},它将处理对 URI (如 widgets/12widgets/42 )发出的请求。

  • 类必须具有公共构造器,才能调用运行时。

    运行时必须能够为所有构造器的参数提供值。constructor 的参数可以包含使用 JAX-RS 参数注释的参数。有关参数注解的更多信息,请参阅 第 47 章 将信息传递给资源类和方法

  • 至少一个类方法使用 HTTP 动词注释或 @Path 注释进行解码。

Example

例 46.3 “根资源类” 显示提供子资源访问权限的 root 资源类。

例 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 “根资源类” 中的类满足 root 资源类的所有要求。

类使用 @Path 注释进行解码。服务公开的资源的 root URI 是 customerservice

类具有公共构造器。在这种情况下,no 参数构造器用于简单。

类为资源实施四个 HTTP 动词。

该类还通过 getOrder () 方法提供对子资源的访问。子资源的 URI (使用 @Path 注释指定)是 customerservice/order/id。子资源由 Order 类实现。

有关实现子资源的详情,请参考 第 46.5 节 “使用子资源”

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.