1|2|3実装上の問題点(クライアントサイド)「では、実際にRESTfulなシステムを構築してみよう」と思わせてしまったかもしれませんが、実は問題があります。いうのも、現在のWebブラウザではHTMLのFORMタグのmethodは「GET」と「POST」のみ許可していて「PUT」や「DELETE」を標準でサポートしていないものがほとんどだからです。RESTfulになるようシステム設計を忠実に守ろうとした場合、現状ではJavaScriptを用いて「PUT」や「DELETE」を送信するなどの手段を取らなければいけません。frameworkが用意しているJavaScriptライブラリより「PUT」や「DELETE」の送信方法を見てみましょう。frameworkでは「public」フォルダの下の「javascripts」フォルダにJavaScriptライブラリの「jQuery」が用意されています。jQueryの細かい使い方については、ここでは割愛します。jQueryについて詳細を知りたい方は@ITの記事を参照してください。覚えて始められるjQueryセレクタ入門jQuery逆引きリファレンスここでは、簡単に「PUT」を送る例を下記に示します。alert('成功しました。</form></body></html>簡単に上記のポイントを説明していきます。frameworkで用意されているjQueryを宣言します。frameworkによって変わることがあるので注意してください。【2】$.ajaxメソッドAjax通信を行うメソッドです。TypeにHTMLメソッドを指定します。今回は「PUT」メソッドを使ってFormデータを指定したURLに送信しています。【3】JavaScriptの呼び出しボタンを押したときにJavaScriptのdoPUT()メソッドを呼ぶようにしています。このように、JavaScriptなどの技術を用いて「PUT」や「DELETE」などWebブラウザがデフォルトで対応していないHTMLメソッドを送信できることはできます。「PUT」や「DELETE」などを呼ぶためだけにJavaScriptを使うなどの手間が発生してしまいます。全体的にうまく設計しないと、このような余計な手間は開発効率も悪くなりますし、バグが発生する可能性が高くなります。RESTの原則から外れてしまいますが、個人的には更新や削除も「POST」で更新や削除のフラグを渡すなどで行う方が現実的かと思います。実装上の問題点(サーバサイド)これで、頑張ればクライアントから「PUT」や「DELETE」の送信をできることは分かりましたが、まだ問題があります。それは、サーバによっては「GET」「POST」以外のHTMLメソッドを受け付けない設定になっている場合があることです。この場合、クライアントでどんなに頑張っても、サーバ側で拒否されてしまうので、「GET」「POST」送信で更新や削除の処理を行うのは仕方がないと思っています。最初のRESTでの説明では「GETやPOSTで読み込みや更新や削除など全てやってしまうシステムはREST的ではありません」と書きましたが、現状、この「PUT」「DELETE」送信に関してはRESTfulでない方がより良い解決策かと思います。無理にサポートされていないHTTPメソッドを送信するための無駄な処理を追加する必要がなくなるので、「PUT」や「DELETE」の代わりに「POST」での送信の方が良いでしょう。イメージとしては以下の2つの送信方法を分ける方が現実的かと思います。frameworkで行う“テスト”についてさて、最後に現状のWebブラウザでのHTTPメソッドに対する制限があり、完全なRESTfulなシステムのは現実的ではないことも分かりましたが、それを差し引いてもRESTはシステムアーキテクチャのパターンとしてはシンプルで使いやすいパターンであるかと思います。frameworkが得意とするRESTの利点を生かしたシステム構築パターンについて学びました。frameworkで行うテストについて紹介しますので、楽しみにしてください。ともゆき)2008年より、株式会社ビーブレイクシステムズに在籍。基本的にはどんな問題があるか分からない新しい技術より、問題点をクリアした使い慣れた技術の方を好む保守派。メールマガジンをご購読ください。申し込みページへITmediaはアイティメディア株式会社の登録商標です。