単純なアイテムの CRUD 用の典型的な mvc アプリを構築したいのですが、API は RESTful である必要があります。ここでの問題は、初期化が必要なアイテムの大きなパレットがあることです。サーバー側では、これらの項目は Java Bean として定義され、項目に対応する作成フォームは、Bean から収集されたフィールド情報 (データ型、検証制約など) から動的に作成されます。私はRESTが初めてで、HTTP動詞で指定されたリソースとアクションを定義する名詞をURLにする方法について読んだだけです。その観点では、次のようなものをモデル化する方法
.../client/showForm?type=xyz
非 RESTful な方法から RESTful な方法へ ?? ここでの私の意図は、xyz タイプのクライアントの CREATE フォームを動的に構築して送り返すようにサーバーに指示することです。上記の URL の明らかな問題は、URL にアクションが指定されていることです。
1 に答える
REST について考えるとき、私はリソースについて考えます。データを考えています。言い換えれば、私は REST を、ユーザー インターフェース コンポーネントであるフォームを取得するために通常使用するものとは考えていません。
REST は、Uniform Resource Identifier (URI) を使用してサーバー上のリソースを識別するために使用されるアーキテクチャ スタイルです。さらに、URI によって識別されるリソースに対して実行されるアクションは、リクエストで使用される特定の HTTP メソッド (GET、POST、PUT、DELETE など) に基づいて決定されます。
したがって、Client オブジェクトがあるとします。そのクライアント オブジェクトには、次のプロパティがある場合があります。
- 名前
- 位置
- 口座番号
単一のクライアントのデータを取得する場合は、次の URI を使用できます。
GET /client/xyz/ # xyx is the accountnumber used to identify the client.
REST では、サーバーからデータを取得するときに使用するメソッドとして GET を説明しているため、GET メソッドを使用します。
REST は標準ではなく、一連の柔軟なガイドラインに似ているため、理論的にはデータを HTML で返すことができます。ただし、データをユーザー インターフェイスから実際に切り離すには、JSON や XML など、プラットフォームに依存しないものを使用してデータを表すことを選択します。
次に、サーバー上のコレクションにクライアントを追加するときは、/client/ URI パターンを使用しますが、サーバー上のコレクションにリソースを追加するときに使用される HTTP メソッド POST を使用します。
# Pass the data as JSON to the server and tell the server to add the client to the
# collection
POST /client/ {"accountnumber":"abc" , "Name" : "Jones" , "Location" : "Florida"}
サーバー上の既存のレコードを変更または置換する場合、おそらく HTTP メソッドの PUT を使用します。これは、REST ガイドラインでは、同じ操作を繰り返し繰り返してもサーバーの状態が変わらない場合は PUT を使用する必要があると規定されているためです。
# Replace the client abc with a new resource
PUT /client/abc/ {"accountnumber":"abc" , "Name" : "Bob Jones" , "Location" : "Florida"}
REST の背後にある一般的な考え方は、リソースを識別し、使用されている HTTP メソッドに基づいてそのリソースに対してアクションを実行するために使用されるというものです。
データをビューと結合することを主張する場合、これを達成して実際のフォームとクライアント データを取得する 1 つの方法は、フォームをリソース自体として表すことです。
GET /client/abc/htmlform/
もちろん、この URL はクライアント abc のクライアント データを返しますが、ブラウザによってレンダリングされる HTML 形式で返されます。
私のコーディング スタイルでは、JSON や XML などのデータ トランスポートを使用してデータを抽象化し、ビューから分離していますが、そのデータを HTML としてトランスポートすることもできます。ただし、JSON または XML を使用する利点は、RESTful API がプラットフォームに依存しないことです。API を他の開発者が使用したい場所に拡張した場合、使用している特定のプラットフォームやプログラミング言語に関係なく、開発者はそれを行うことができます。つまり、API は、PHP、Java、C#、Python、Ruby、または Perl の開発者が使用できます。
つまり、HTTP リクエストを作成し、GET、POST、PUT、DELETE リクエストを送信できる任意の言語またはプラットフォームを使用して、API を拡張または構築できます。これが REST の真の利点です。
Spring MVC で REST を使用するようにコントローラーを設定する方法の詳細については、この質問を参照してください。さらに、詳細については、Spring MVC のドキュメントを確認してください。
また、 REST に関するウィキペディアの記事をまだチェックアウトしていない場合は、チェックアウトすることを強くお勧めします。最後に、REST に関するもう 1 つの優れた古典的な読み物はHow I Explained REST To My Wifeです。楽しみ。