私は、「ファクト」と呼ばれるリソースのコレクションのURIと、そのコレクションの各「ファクト」リソースのURIを持っています。HTMLフォームをすばやく送信するには
新しい「ファクト」を作成するフォームは、GETを使用してリクエストする必要がありますが、私は信じていますが、どのURIを作るべきかを決めるのは難しいです。
コレクションURIへのGETは、 'ファクト'リソースURIのリストを返すべきです。各 'fact' URIは、GETへの応答としてその内容を返すべきです。実際の「事実」作成はもちろん、状況に応じてPOST(またはPUT)になります。
私はいくつかのオプションが表示されますが、どれも満足のいくように見えるん:
- は「事実」URIが参照する「ファクトフォームのURIを追加します。このURIへのGETは、HTMLフォームを提供します。リソースの説明のためだけに別のリソースを持つのは間違っているようです。
- ヘッダーにフォームデータを含めずに 'facts' URIにPOSTを実行すると、フォームが返されます。ユーザーがフォームを入力すると、フォームデータでPOSTし、新しい 'ファクト'リソースを作成します。これはさらに悪いアプローチのようです。
- フォームをワイヤで送信するのではなく、APIの一部としてフォームを送信します。これは、REST APIがメディアタイプを記述する必要があり、フォームが 'fact'タイプの記述から作成できるため、RESTfulと思われます。これは実装するのが奇妙です。おそらく、RESTサービスは通常のWebサイトとは別物なので、実際のHTMLフォームリクエストはREST API以外のURIにあります。
- 「ファクト」URI応答の一部としてHTMLフォームを組み込みます。
明確にするために、私はRESTとしてポーズを取ったRPCを使わず、Roy Fieldingが指定した真のRESTアーキテクチャに従おうとしています。
編集:私は#3が何かにあると思っています。
edit2:解決策は、通常の非REST HTMLナビゲーションをCRUD方式で行い、フロントエンドがAJAX REST呼び出しを適切に行うことです(またはバックエンドがREST APIを内部呼び出しする)。
このサービスのREST部分を正しく実行する必要がある理由は、他のHTML以外のクライアントが後でこのサービスとやり取りできるようにするためです。
後者は、フォームの完全なURIです。 URI自体がどのように見えるかは気にしませんが、これはRESTには関係ありません。前者はクエリを誤って使用していますが、メリットがあるかもしれません。 – aehlke
「クエリの誤用」とはどういう意味ですか?このアプローチにはいくつかの欠点がありますか?私はこれが私がこの状況でおそらく使用していたものなので、知りたいのですが。 – trendels
クエリは、特定のリソースを指定するのではなく、実際のクエリのようなリソースセットのサブセットを要求するためのものです。 – aehlke