Java EE 7徹底入門を読んだ(JAX-RSあたり)
次はJSFを読むと約束したな。あれは嘘だ。
JAX-RSは9章ですね。
RESTとSOAPの目指すべきところ
この本では違うと言ってますがたぶん一緒。
歴史的に見て、RESTよりもSOAPの方が先に出てきました。
しかし、SOAPはHTTPを使用する場合はすべてのアクセスをGETもしくはPOSTでしか受け付けない規定があるため、データの検索や、データの更新がすべてGET/POSTで行われてしまい、インフラレイヤーからだとどのアクセスが更新なのか、どのアクセスが検索なのかが判らず、どのデータをキャッシュしてもよいのかの判断ができないということが問題となります。
それを解消するためにURLごとにこのURLは更新作業なのでキャッシュしてはいけない、このURLは検索なのでキャッシュしても大丈夫〜みたいなのを定義していたのですが、それは面倒くさい。
HTTPの(ほぼ使われていなかった)METHODにバインドすることでその判断を画一的にできるんじゃないかとして生まれたのがRESTです。
本を読んでいるとなんとなくSOAPはRESTの上位バージョンみたいな印象を受けるのですが、歴史的に見ればSOAPの上位バージョンがRESTでした。*1
また、SOAPはxmlでのやり取りしか定義されていませんが、RESTはxmlでもjsonでもやり取りができます。jsonでやり取りをする場合にxmlのようなスキーマがありませんが、インターフェースには型が必要だとねという話で盛り上がっているのがjson schemaです。
RESTではSOAPにあった、必ずスキーマと定義しなければいけないという規定はオミットされていますが、スキーマも定義できるようにする方向に舵がとられているというのはバランスなのでしょう。
と、RESTとSOAPは同じようなものとの説明をしてきましたが、明確に違う場所が一つあります。SOAPは単独で完結していますが、RESTは外部に依存していることです。
RESTにペイロードの規定はありませんが、実質HTTPもしくはその互換APIに依存しています。
HTTP自体そこまで効率的とはいえないので、そもそも論としてHTTP以外を使用できる場合はSOAPが生きてくると思います。*2
その他
JPAのエンティティクラスをそのまま公開するなと明確に書いてあるのは好印象
正直、JAX-RSはちゃんと勉強してないので細かい場所は読んで終わりになってしまいました。
内容で間違ってる場所があればだれか怖い人が突っ込んでくれるでしょう。
Java EE 8のJSRは読もうかな。
Java EE 7徹底入門 標準Javaフレームワークによる高信頼性Webシステムの構築
- 作者: 寺田佳央,猪瀬淳,加藤田益嗣,羽生田恒永,梶浦美咲,小田圭二
- 出版社/メーカー: 翔泳社
- 発売日: 2015/12/16
- メディア: 大型本
- この商品を含むブログ (7件) を見る