2017-12-01 19 views
1

のRESTFulパターンとは何ですかを無効にするシステムユーザです。有効化と無効化のためのRESTFulパターンのURL

例:/users/123

へ DELETE /users/123 への要求とPATCH/UPDATE要求または私はDELETE使用してPUTと/user/disable/123を使用して/user/enable/123を使用する必要がありますか?

+2

'REST'はプロトコルでもなく、APIをどのように設計するのかも規定していません。サーバ/ APIからクライアントを切り離すためのシステム設計アーキテクチャです。 URIデザインは、実際のRESTクライアントにはあまり関心がありません。そのURIのセマンティクスが何であるかを解釈することなく、サービスによって返されたURIを使用するだけです。 –

答えて

2

まず、DELETEは常にリソースを削除します。したがって、は値を変更するためにを使用できません。さまざまなHttpメソッドとその使用方法についてはこちらをご覧ください:https://tools.ietf.org/html/rfc7231

これは3通りの方法で解決できます。あなたが一番合うものは何でも。

更新ユーザーオブジェクト

別のアプローチは、Userリソースを更新することによりだろう。 この場合、PUT /users/123に、完全に更新されたユーザーオブジェクトを含む本文を送信することができます。

ユーザーオブジェクトの部分更新

あなたが部分更新を(部分的にはあなたが唯一の既存のユーザーオブジェクトにマージされます変更された値を送信する必要があることを意味)することができます行うことを許可されていることを定義した場合{enabled:true}とjsonを含むPATCH /users/123を送信します。これは通常、バックエンドで処理するのが少し面倒です。

を直接enabledプロパティ(推奨されません)

enabledUserのプロパティで設定します。あなたのURLにこのプロパティを直接記述することができます。 trueまたはfalseを含む本文にPUT /users/123/enabledを使用できます。このアプローチには、以下の@Roman Vottnerのコメントも参照してください。

+2

まず、 'enabled'プロパティを自身のサブリソースとして公開します。このサブリソースが単独でサブリソースとみなされるべきかどうかは疑問ですが、使用可能なツールセットを問題なく適合させるための回避策があります。一方で、RFC7231の "重複リソース"ノートではこれを正確に記述していると言えるかもしれませんが、一方でリソースの面ではハックTBHのように感じられます。部分的に更新するには、[JsonPatch](http://jsonpatch.com/)を使用します。パッチリクエストには、サーバーが完全に実行するかどうかを示す指示が含まれている必要があります。 –

+1

意味的にユーザーを「無効にする」とは、ユーザーは削除されますが、ユーザーDELETEを使用できます。 – Jaumzera

0

システムユーザを有効または無効にするためのRESTFulパターンとは何ですか?

ウェブサイトのページではどうしますか?

システムユーザーを説明するページを読み込んで、そこからユーザーの状態を変更するためのアフォーダンスのあるフォームに移動することがあります。必要なフォームに値を設定し、提供されたURLにフォームを送信します。サーバーはリクエストを処理し、ステータスページを表示するか、更新されたユーザーのコピーなどにリダイレクトします。

注意:プロセス全体を通して、クライアントはサーバーによって提供されるリンクの後にです。 URIを推測することなく、使用するhttpメソッドを推測することはありません。クライアントはハイパーメディアに埋め込まれた指示に従います

同じプロセスを機械可読な方法で繰り返します.REST APIがあります。

RESTは、メッセージを渡して「リソース」を操作することを覚えておいてください。あなたのドメインモデルに加えられた変更は、リソース操作のの副作用です。つまり、リソースは統合ドメインの一部です。 Jim Webber - REST: DDD in the Large

関連する問題