一般的なエンティティの相互作用を行うためにRESTを使用する方法を理解しています-URL名を使用してエンティティにマップし、HTTP動詞を使用してそれらのエンティティのアクションにマップします。しかし、RPCのような「アクション」を見る一般的に受け入れられている方法は何ですか?
たとえば、デバイスをリセットするためのコマンドを送信したいとしますか?ここには本当の「エンティティ」はありませんか、POSTのようなことをしますかhttp://mydevice/device/reset?
一般的なエンティティの相互作用を行うためにRESTを使用する方法を理解しています-URL名を使用してエンティティにマップし、HTTP動詞を使用してそれらのエンティティのアクションにマップします。しかし、RPCのような「アクション」を見る一般的に受け入れられている方法は何ですか?
たとえば、デバイスをリセットするためのコマンドを送信したいとしますか?ここには本当の「エンティティ」はありませんか、POSTのようなことをしますかhttp://mydevice/device/reset?
/device/reset
または/system/reset
大丈夫です。
REST の「デザイン パターン」では、動詞を使用しないことをお勧めします。
POST http://mydevice/system/state
<stateType>RESET</stateType>
関連情報:
POSTを使用する場合はそうではないと思います。「RESETアクション」はべき等アクションであるため(n回呼び出すと、常に同じ結果が得られます)、IMHOではPOSTの代わりにPUT呼び出しを使用する必要があります(POSTはべき等ではないため)。
また、リソースを配置しているので、使用することができます
PUT http://system
<device>
<status>RESET</status>
</device>
また
PUT http://system/status/reset
しかし、最初のものはリソースを配置しているので「より安らぎ」であり、2番目のものはURLを使用するだけだと思います。
私は通常、エンティティに「システム」などの名前を付けます。したがって、「/system/reset」を実行します。デバイスを選択したので、それも機能します。
しかし、そうです、私は通常、これらのタイプのアクションを POST メソッドを使用する更新であると考えています。したがって、/device/reset に POST するのは正しいと思います