1

タスクのリストを持つRESTfulサービスがあるとしましょう。

GET mycorp/api/v1/tasks

これらの各タスクは、1つ以上のコンテキストを持つことができます。

GET mycorp/api/v1/tasks?context=somecontext

使用中に、ユーザーはタスクのバッチを削除します。

DELETE mycorp/api/v1/tasks?context=somecontext

このアクションが実行されたら、上記のDELETEアクションのためにシステムで孤立しているコンテキストがいくつかあると仮定します。また、ユーザーが同じコンテキストを何度も入力する必要がないように、孤立したコンテキストがあっても問題ないと仮定しましょう。

ユーザーDIDがこれらのコンテキストを明示的に削除したい場合、RESTのコンテキストでこれを行う正しい方法は何でしょうか?私は自然に2つの選択肢に向かって引力を注いでいます。

DELETE mycorp/api/v1/tasks?context=somecontext&&deleteorphancontexts=true

そしてまた

DELETE mycorp/api/v1/contexts?isorphaned=true

私はまだRESTに不慣れであり、私が構築するAPIが官能的で堅固であることを確認するために何をすべきか。

4

1 に答える 1

2

まず、RESTは厳密なガイドラインではないため、明確な答えはありませんが、さまざまなURLをリソースとして表示するのに役立つと思います(結局のところ、RESTのすべてです)。

サーバーにDELETE要求を送信すると、その場所にあるリソースを削除するようにサーバーに指示します。この例では、コレクションのコンテンツを削除していると想定していますが、実際には、コレクション自体を削除するようにサーバーに指示しています。したがって、直後にGETリクエストを発行した場合は、コレクションが空の200応答ではなく、204(コンテンツなし)応答を受け取ることを期待する必要があります。それが適切であれば、問題は解決されます。

私の意見では、PUTリクエストの反対として、個々のコンテキスト/タスクにDELETEリクエストを使用する方が良いでしょう。指定されたコンテンツを削除するコマンドを含むPOSTリクエストを発行して、コレクションを変更する方が適切です。

このようにして、投稿することができます

mycorp / api / v1 / contexts

サーバーにすべての孤立を削除するように指示するコマンドを送信します。

私がこれを好む理由は、コンテキストパスをそれ自体がコレクションとして扱っており、一部のアイテムが孤立している可能性があるためです。

通常、POSTはHTTPのジョーカーであるため、疑問がある場合は友達です。

于 2012-06-13T13:00:01.133 に答える