だから、私はRubyonRailsを学んでいます。アプリケーションアーキテクチャへのRESTfulアプローチの基本を理解しましたが、RESTfulアプリケーションを完全に構築していません。
従来のWebアプリケーションでは、べき等要求(状態を変更しない)はHTTPのGET
メソッドを介して行われ、すべての非べき等要求は通常、POST
メソッドを介して行われます。POST
アプリケーションがリクエストによってトリガーされる可能性のあるさまざまなアクションを区別するために、通常、またはPOST
のように、リクエストに含まれるフォームに非表示のフィールドがあります。これはかなり単純なアーキテクチャであり、今日ではかなり一般的ですが、RESTアプローチはこれから私たちを遠ざけ、これが「すべてをPOSTしましょう」ことを示唆しています。デザインは有害であると見なされます。action=delete
action=add_to_foo_file
代わりに、RESTfulアーキテクチャでは、リクエスト内の別のフィールドに基づいて実行するアクションを決定する代わりに、リソースを一意に識別するURI(名詞)とHTTPリクエストメソッド(動詞)を介してリソースを操作します。
GET => show the resource
PUT => update the resource
POST => create a new resource
DELETE => destroy the resource
では、RubyonRailsについて説明します。RailsではPUT
、DELETE
JavaScriptによって実装されます。JavaScriptは、リンクを。と呼ばれる非表示フィールドを持つフォームに変更します_method
。フォームはブラウザからPOST
、を介して受信され、Railsはこのフィールドを探して、リクエストをコントローラのPUT
またはDELETE
メソッドにルーティングするかどうかを決定します。
待って、何?POST
これは、レコードを破棄するか変更するかを決定するために特定のフィールドを介してすべての状態変更要求を受信し、検査する従来のWebアプリケーションの動作とまったく同じように不審に聞こえます。
では、RailsのアプローチはRESTfulであるとどのように言えますか?内部的には、RESTが具体的に離れようとしている「すべてをPOSTしよう」アプローチの再実装にすぎないからです。
さらに、このアプローチは、ブラウザーでJSがオフになっているユーザーに対して、私のRailsアプリが正常に劣化するのを防ぎませんか?