2011-02-08 8 views
3

私の質問はストレートフォワードです。ReSTfulデザイン:空のオブジェクトを新しいフォームを作成するためのテンプレートとして返します。

現在、以下のURIが存在します

http://someserver/service/item   GET returns all items 
http://someserver/service/item   POST creates a new item 
http://someserver/service/item/{id}  GET returns item with id {id} 
http://someserver/service/item/{id}  PUT updates item with {id} 

私は何をしたいのは、その種類、オブジェクトパラメータのリストが含まれている新しいアイテムを作成するためのテンプレートのように、空白の「アイテム」を返すあり、必要かどうか。この理由は、私がジェネリックjquery 'create new'プラグインをビルドしたいと思っていることです。新しいプラグインはデータ構造を完全に知らないので、私の新しいオブジェクトすべてに適用することができます。

これを実装する最良の方法は何ですか?

私はこれがあなたの時間のために意味を持ち、ありがとうと思います。

答えて

2

私はほとんど同じことをします。私はPOSTすることができる私の "アイテムのリスト"リソースにリンクを含める。レスポンスは新しい項目のテンプレートです。おそらくあなたはテンプレートを取得するためにGETを行うこともできますが、私の要求が冪等でないようにアイテムに新しいIDを割り当てる機会を使用します。

+0

ああ - ご覧ください!だからあなたはIDを持つ新しいオブジェクトを作成し、それを返信して新しく作成したオブジェクトに対してPUTを実行する空のPOSTを行いますか?パラメータのデータ型、最大長などを示すメタデータをレスポンスオブジェクトに含めますか? – jimjim

+1

@jimjim私の応答には、データ型、検証情報、データバインディングなどに関する情報を持つメタデータドキュメントへのリンクが含まれています。このようにして、クライアントはメタデータ情報をキャッシュできます。すべてのインスタンス文書に情報を含める必要はありません。 Locationヘッダーを使用して、新しく作成されたリソースのURLを指定してください。 –

8

私はDarrelから提供された回答を理解していますが、私は敬意を表することができます。

このテンプレートオブジェクト(リソース)は、一般的にしたいのでアプリケーションの重要な部分です。それは第一級の市民資源であり、我々はRESTについて話しているので、それに対応する処置を与えなければならない。テンプレートリソースを取得できるはずです。POSTの後ろに隠されてはいけません。

GET http://someserver/service/item/template 

さらに、GETを介してリソースにアクセスできるときに、バージョン管理とバラツキを簡単に導入することもできます。

+2

:-)エンドポイントの見た目があまり関係ないので、サンプルURIをエンドポイントに提供することは慎重に避けました。 rel = "create | new | template | whatever"というリスト文書では、重要なURIを発見することができます。完全に良いURI ../templateに名前を付ける場合。自分のデータベースに格納されているIDを生成してインクリメントするのでPOSTを使用します。 IDのGUIDを使用すると、GETはうまく動作します。 –

関連する問題