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

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

JAX-RSがわからない
タイトルのとおり、JAX-RSがわかりません。   仕事で使ったのですが、理解できず完全に雰囲気で使っています。自分の認識を確認するため、私...

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

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

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

REST通信について

そもそも REST とは何なのか。REST は、Representational State Transfer の略称です。プロトコルではありません、アーキテクチャのスタイルや原則の意味で使用されます。プロトコルとしてはHTTPを使用します。

RESTを使用してサーバー間の通信を実施する方法はたくさんあるようです。しばらく調査した結果、jerseyが情報量も多く使いやすそうです。

jerseyは通信データとしてclassを送受信する上級者向けの方法もとれますが、XMLやJSONを送受信するお手軽な方法もとれます。ひとまずはそれを身に付けよう。

Java HTTP Clientについて調査

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

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

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

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

https://qiita.com/alt_yamamoto/items/0d72276c80589493ceb4


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

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

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

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

https://qiita.com/KevinFQ/items/9d5e1b189a3f541e6ec1

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

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


私が使いたいのはREST。

その他 気付いたこと

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

https://qiita.com/ekzemplaro/items/0d23455c9930caa4c069


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

https://kazuhira-r.hatenablog.com/entry/20131026/1382796711
https://www.baeldung.com/jersey-rest-api-with-spring
https://www.baeldung.com/spring-5-webclient