JavaでREST通信 ~HTTP Clientを調査してみる偏~

先日JAX-RSが分からな過ぎて記事を書きました。

あれからしばらく経ちましたが、再びJAX-RSが必要と思われる場面に遭遇しました。サーバー間で通信が必要な場面です。

前回、理解はしていないけどもJAX-RSプログラムは作成したので動く手本となるものは手元にあります。しかし、動かしてみたのだが意味が分からない!こんなに意味不明だっけ?といった具合で前回のことさえ忘れてしまっていました。


そこで、今回JavaでREST通信する方法について調査してみました。


最初はSOAP通信とREST通信をごっちゃにしていた

今まで知らずに構築していましたが、Webサービス・クライアントは3種類あるらしいです。

Webサービス・クライアントについて、主に以下の3つのコーディング方法があります。
 - ディスパッチ・クライアント
 - 動的プロキシー・クライアント
 - Spring JaxWsPortProxyFactoryBeanの利用

でもなんか、これみんなwsdl使ってるね??私が求めているものと違うかも??
様々なWebサイトを見てみたがどれもSOAP通信のことが記載されていた。Webサービス・クライアントというのはSOAPで使う言葉のようです。


私が使いたいのはREST。

REST通信について

ここらへんはRESTでやっているみたい。でも難しいな。


おとなしくjerseyを使用した方が良さそうだ。jerseyは資料が沢山ある。資料がたくさんあるのは良い。

しかも、classを投げあう上級者向けもあったが、XMLやJSONを投げる小規模向け開発手法もあったはずだ。ひとまずはそれを身に付けよう。

Java HTTP Clientについて調査

jerseyってサービス側ばかりの記事だな。もしかしてクライアントは違う言い方をする?jerseyはサービスとクライアントがセットになったものという認識でOK?

と思って調査してみると、クライアントは手軽に使えるものが色々とありそうだ。java http client spring と調べると沢山出てきて良い。

WebサービスクライアントでなくてHTTPクライアントと調べればよかったのな。

と思ったが良い記事を見つけた。このサイトでは様々なHTTP Clientの比較をしてくれている、こういうのを探していた。


上記サイトを見て、自分で各種HTTP Clientのソースコードを見てきました。そして、私にとって一番理解しやすかったのが「Apache HttpComponents」でした。ソースコードも直感的に分かりやすし、Apatch HttpComponents 公式サイトのサンプルが豊富なので有難い。

ということでソースコードを組んでみて、Web APIと通信させたので次回の記事でソースコードの公開と説明をします。

その他 気付いたこと

Javaにも標準でHttpClient が付いたらしいな??


かなり昔からあるみたいだ。




Let's share SNS