REST

REST:Representational State Transfer

拙作のリッチクライアントフレームワークSOAPを使用しなかった理由(正確にはSOAPではなくWS-*〜の仕様群を使いたくなかった)を顧客と上司に説明するために私の中で曖昧だったRESTを理解するためにもREST解説する文章を考えていたんですがいつものごとく既に良い仕事をされている方がいらっしゃったので自分でまとめるのは止めました。

yohei-y:weblog「REST 入門 」

元々RESTという言葉を見たのは自分でAmazon WebServiceを試してみようと思ってそのドキュメントを見た時でした。当時は日本語でRESTに関して言及したコンテンツはアカデミックに過ぎるものや難解なものが多かったのですがyohei氏のBlogは今まで読んだ中で最も解り易く素晴らしいRESTの解説になっていると思います。(リンクの目次からはなぜか4章のリンクだけが見れません。私のブラウザがIEだからかな?)

この解説を読むと私の現在書いているフレームワークの.NET<->Java間のHTTP通信部分がSOAPでも無ければましてやRESTでも無いXML over HTTP、敢えて言うならば"RESTもどき"になってしまっていることが解りました。
RESTの原則に沿っていることを"RESTful"と称するのですが拙作のフレームワークは以下の点においてRESTfulではありません。

  • メソッド"POST"を濫用している(他のコマンドを使うべきなケースでもPOSTを使っている)
  • HTTPステータスコードを正しく解釈、処理していない

なにかのアーキテクチャを採用する際に原理主義に偏ることは危険ですが基本を崩すには基本そのものを理解している必要があるってことを考えるとやはり最初は正しく使うべきなのでしょう。 特に二つめに関しては相手がJava Servlet+自前フレームワークになっていると殆どのHTTPステータスコードの処理は隠蔽されてしまうのでこのままではHTTPを正しく解釈できるクライアントに対してきちんとした対応ができないことになります。早急に見直しが必要な部分だと認識した次第。

追記:yohei氏のREST入門の目次からのリンクが一部見れない件ですがご本人のコメントにあるようにエンコードUTF-8にすることで正常に見れる事を確認しました。