2.19. MicroProfile REST Client


重要

MicroProfile REST 客户端仅作为技术预览提供。技术预览功能不包括在红帽生产服务级别协议(SLA)中,且其功能可能并不完善。因此,红帽不建议在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

如需有关技术预览功能支持范围的信息,请参阅红帽客户门户网站中的技术预览功能支持范围。

JBoss EAP 7.3 支持 MicroProfile REST 客户端 1.4.x,它构建于 JAX-RS 2.1 客户端 API,以提供通过 HTTP 调用 RESTful 服务的类型安全方法。MicroProfile 类型 Safe REST 客户端定义为 Java 接口。利用 MicroProfile REST 客户端,您可以使用可执行代码编写客户端应用。

MicroProfile REST 客户端启用:

  • 直观的语法
  • 供应商的程序注册
  • 供应商声明注册
  • 标头声明规格
  • 在服务器中传播标头
  • ResponseExceptionMapper
  • CDI 集成

2.19.1. 直观的语法

MicroProfile REST 客户端启用分布式对象通信版本,它也在 CORBA、Java 远程方法调用(RMI)、JBoss 远程方法传递项目和 RESTEasy 中实施。例如,考虑资源:

@Path("resource")
public class TestResource {
   @Path("test")
   @GET
   String test() {
      return "test";
   }
 }

访问 TestResource 类的 JAX-RS 原生方式是:

Client client = ClientBuilder.newClient();
String response = client.target("http://localhost:8081/test").request().get(String.class);

但是,Microprofile REST 客户端通过直接调用 test() 方法来支持更直观的语法:

@Path("resource")
public interface TestResourceIntf {
    @Path("test")
    @GET
    public String test();
}

TestResourceIntf service = RestClientBuilder.newBuilder()
                              .baseUrl(http://localhost:8081/))
                              .build(TestResourceIntf.class);
String s = service.test();

在上例中,让 TestResource 类的调用在使用 TestResource Intf 类时变得更容易,如调用 service.test() 所示。

以下示例是 TestResourceIntf 类的更详细版本:

@Path("resource")
public interface TestResourceIntf2 {
   @Path("test/{path}")mes("text/plain")
   @Produces("text/html")
   @POST
   public String test(@PathParam("path") String path, @QueryParam("query") String query, String entity);
}

调用 service.test("p", "q", "e") 方法会产生一个类似如下的 HTTP 消息:

POST /resource/test/p/?query=q HTTP/1.1
Accept: text/html
Content-Type: text/plain
Content-Length: 1

e
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.