1

「標準」リストとGET/POST / PUT / DELETE動詞を名詞の周りに実装して、RESTサービスの基本を実行しました。

ただし、私が協力しているクライアントベースは、より強力な操作も必要としています。バックエンドでMongoDBを使用していますが、「更新」操作を公開するのは簡単です。 このページでは、Mongoが更新を行う方法について説明します。

Mongo更新関数の「criteria」と「objNew」の部分にJSON/XML/その他の引数をいくつか使用するページを作成するのは簡単です。たぶん私はhttp://myserver.com/collection/updateのような、POST(またはPUT?)リクエストを受け取るページを作成し、そのデータを含むリクエスト本文を使用します。悪意のあるクエリの入力をスクラブし、セキュリティを強化すれば完了です。ケーキ。

私の質問は、これをRESTfulな方法で公開するための「最良の」方法は何ですか?明らかに、「更新」は名詞ではないため、上記で説明したアプローチはコーシャではありません。この種のことはSOAP/RPCメソッドにはるかに適しているように見えますが、サービスの残りの部分はすでにREST over HTTPを使用しているため、ユーザーが2つの異なるタイプの呼び出しを行う必要はありません。

考え?

4

2 に答える 2

2

通常、これは次のように処理します。

  • url / collection
  • url / collection / item

  • GETコレクション:コレクションリソースの表現を返します

  • GETコレクション/アイテム:アイテムリソースの表現を返します(コンテンツタイプのオプションのURIパラメーター:json、xml、txtなど)

  • POSTコレクション/:新しいアイテムを作成します(XML経由の場合、XSDを使用して検証します)

  • PUTコレクション/アイテム:既存のアイテムを更新します

  • コレクション/アイテムの削除:既存のアイテムを削除します

それは役に立ちますか?

于 2010-01-19T16:53:42.313 に答える
1

あなたはそれがRESTに適していないことを知っているので、あなたはそれを機能させるために最善を尽くして標準を発明しなければならないでしょう。Mongoの更新機能はこれまでのところRESTから削除されており、実際にはコレクションでPUTを許可します。私の例のパラメーターは無視してください。私はそれらについてあまり深く考えていません。

  • PUTコレクション?set = {field:value}
  • PUTコレクション?pop = {フィールド:1}

または:

  • PUTコレクション/ポップ?フィールド= 1
于 2010-01-20T06:48:32.733 に答える