1. ホーム

[解決済み】JavaのRESTクライアントはどのように作成しますか?[クローズド]。

2022-04-07 05:05:22

質問

JSR 311とその実装により、私たちはREST経由でJavaオブジェクトを公開するための強力な標準を手に入れました。しかし、クライアント側には、SOAPのApache Axisに匹敵する何かが欠けているように思われます - Webサービスを隠し、データをJavaオブジェクトに透過的にマーシャルバックする何かです。

Java RESTful クライアントはどのように作成するのですか?HTTPConnectionと結果の手動パースを使って?または、JerseyやApache CXRなどのための特別なクライアントですか?

どのように解決するのですか?

これは古い質問(2008年)なので、当時よりも選択肢が多くなっています。

UPDATES(2020年現在も活動しているプロジェクト)。

  • Apache HTTP Components (4.2) Fluent アダプタ - JDKの基本的な代替品で、このリストの他のいくつかの候補でも使用されています。古いCommons HTTP Client 3よりも優れており、独自のRESTクライアントを構築するのに使いやすい。のようなものを使う必要があります。 JSONパース用Jackson をサポートし リソースURIを構築するためのHTTPコンポーネントURIBuilder Jersey/JAX-RSのRestクライアントに似ています。HTTPコンポーネントはNIOもサポートしていますが、RESTの短いリクエストの性質を考えると、BIOよりも良いパフォーマンスが得られるとは思えません。 Apache HttpComponents 5 は、HTTP/2をサポートしています。
  • OkHttp - JDKの基本的な代替品で、このリストの他のいくつかの候補で使われているhttpコンポーネントに似ています。新しいHTTPプロトコル(SPDYとHTTP2)をサポートしています。Androidで動作します。残念ながら、真のリアクターループベースの非同期オプションは提供されていません(上記のNingとHTTPコンポーネントを参照)。しかし、新しいHTTP2プロトコルを使用すれば、これはあまり問題ではありません(接続数が問題であると仮定して)。
  • Ning Async-http-client - はNIOサポートを提供します。以前は <ストライク 非同期-http-client Sonatype社製 .
  • フェイン 低レベルの http クライアント (okhttp, apache httpcomponents) 用のラッパーです。JerseyやCXFの拡張と同様に、インターフェーススタブに基づいてクライアントを自動生成します。Springとの強力な統合。
  • レトロフィット - 低レベルの http クライアント (okhttp) 用のラッパーです。Jersey や CXF の拡張と同様に、インターフェーススタブに基づいてクライアントを自動生成します。
  • ボレー google による jdk http クライアントのラッパー。
  • グーグルヘルプ Google による jdk http クライアント、または apache httpcomponents のラッパー
  • ユニバース kong 氏による jdk http クライアントのラッパー
  • 安楽 jdk http クライアントの JakartaEE ラッパー、jboss による、jboss フレームワークの一部
  • jcabi-http apache httpcomponents 用のラッパーで、jcabi コレクションの一部です。
  • レストレット restlet フレームワークの一部である apache httpcomponents 用のラッパーです。
  • レスト・アシュアード ラッパーで、テストを容易にするためのアサート

HTTP/RESTクライアントを選ぶ際の注意点。フレームワーク・スタックがHTTPクライアントとして何を使っているか、それがどのようにスレッディングを行うかを確認し、理想的には同じクライアントを提供するならばそれを使うようにします。もし、Vert.xやPlayのようなものを使っているなら、フレームワークが提供するバスやリアクターループに参加するために、そのバッククライアントを使いたくなるかもしれません...さもなければ、興味深いスレッドの問題に備えることができます。