2012-02-21 7 views
3

のは、私は次のようになりますノートを作るためのRESTサービスを構築しているとしましょう:リストの悪い練習の最後か最初の要素を得るためにRESTサブリソースを作成していますか?

GET /notes/  // gives me all notes 
GET /notes/{id} // gives the note with the identified by {id} 
POST /notes/  // creates note 
PUT /notes/{id} // updates note identified by {id} 
DELETE /notes/{id} // delete note 

今私は私が取得/更新/最初または最後のノートを削除することを可能にするサブリソースを作成します。

GET /notes/first // get first note added 
PUT /notes/last // updates last note added 
DELETE /notes/first // delete first note 

これはRESTの原則に反しますか?

は、事前にありがとう:)

EDIT:

PS:この例では、私はIDが、これは完全に合法と望ましい私の愚見では常に数

答えて

2

ことを期待します。私は特にDELETE /notes/firstのセマンティクスが好きですが、POST /notes/first-は最初のものの前に新しい注釈を入れます

firstlastは、特殊な魔法の識別子やプレースホルダです。一方、代替案は何ですか?

+0

こんにちはトマシュ、お返事ありがとうございます。私はあなたのPOST /ノート/最初の配慮が好きで、ファッションのようなスタックでサービスを使うことができます。 特定のノートを最初の位置に移動する最も良い方法は何ですか? – Zounadire

+0

@ Zounadire:良い質問です!私のアイデアは、 'POST/notes/42/move'または' DELETE'と 'POST/notes/first'の破壊的なペアです:-( –

+0

Hmmm ... Okですが、もちろんこれは追加のフィールドがある場合のみ有効です特定のノートが常に同じURLの下に届くようにidを同じにしたいので、リスト内の位置を追跡してください。 そのため、サーバーが原因で2番目のアプローチで問題が発生する – Zounadire

関連する問題