gpt4 book ai didi

java - 如何为 Java 创建 REST 客户端?

转载 作者:bug小助手 更新时间:2023-10-28 10:41:43 25 4
gpt4 key购买 nike

借助 JSR 311 及其实现,我们拥有了通过 REST 公开 Java 对象的强大标准。然而,在客户端,似乎缺少与 Apache Axis for SOAP 类似的东西——隐藏 Web 服务并将数据透明地编码回 Java 对象的东西。

如何创建 Java RESTful 客户端?使用 HTTPConnection 和手动解析结果?或专门的客户,例如Jersey 还是 Apache CXR?

最佳答案

这是一个老问题(2008 年),所以现在有比当时更多的选择:

更新(2020 年仍然活跃的项目):

  • Apache HTTP Components (4.2) Fluent adapter - JDK 的基本替代品,被此列表中的其他几个候选者使用。比旧的 Commons HTTP Client 3 更好,并且更易于用于构建您自己的 REST 客户端。您必须使用 Jackson for JSON parsing 之类的东西支持,你可以使用HTTP components URIBuilder to construct resource URIs类似于 Jersey/JAX-RS Rest 客户端。 HTTP 组件也支持 NIO,但考虑到 REST 的短请求性质,我怀疑你会获得比 BIO 更好的性能。 Apache HttpComponents 5 支持 HTTP/2。
  • OkHttp - JDK 的基本替代品,类似于 http 组件,被此列表中的其他几个候选者使用。支持较新的 HTTP 协议(protocol)(​​SPDY 和 HTTP2)。适用于安卓系统。不幸的是,它没有提供真正的基于 react 器循环的异步选项(参见上面的 Ning 和 HTTP 组件)。但是,如果您使用较新的 HTTP2 协议(protocol),则问题不大(假设连接数有问题)。
  • Ning Async-http-client - 提供 NIO 支持。以前称为 Async-http-client by Sonatype
  • Feign 用于低级 http 客户端(okhttp、apache httpcomponents)的包装器。基于类似于某些 Jersey 和 CXF 扩展的接口(interface) stub 自动创建客户端。强大的 Spring 集成。
  • Retrofit - 低级 http 客户端 (okhttp) 的包装器。基于类似于某些 Jersey 和 CXF 扩展的接口(interface) stub 自动创建客户端。
  • Volley google 的 jdk http 客户端包装器
  • google-http google 的 jdk http 客户端或 apache httpcomponents 的包装器
  • Unirest jdk http 客户端的包装器,由 kong 提供
  • Resteasy 用于 jdk http 客户端的 JakartaEE 包装器,由 jboss 提供,是 jboss 框架的一部分
  • jcabi-http apache httpcomponents 的包装器,jcabi 集合的一部分
  • restlet apache httpcomponents 的包装器,reSTLet 框架的一部分
  • rest-assured 带有断言的包装器,便于测试

关于选择 HTTP/REST 客户端的注意事项。确保检查您的框架堆栈正在为 HTTP 客户端使用什么,它是如何处理线程的,并且如果提供了一个客户端,最好使用相同的客户端。也就是说,如果您使用 Vert.x 或 Play 之类的东西,您可能想尝试使用其支持客户端来参与框架提供的任何总线或 react 器循环......否则请为可能有趣的线程问题做好准备。

关于java - 如何为 Java 创建 REST 客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/221442/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com