1

次の方法を安らかに表現するための正しい方法に頭を悩ませようとしています...

x台のサーバーがあり、それらがWindows、Linux、およびUnixを実行しているとします。

各サーバーに対してping、シャットダウン、およびユーザーアクションを実行できます。

APIはサーバーを認識していないため、リクエストはサーバーの種類とアクションの種類(認識している)とともにIPアドレスを提供する必要があります。

そのことを念頭に置いて、これらの単純なURLが思い浮かびますが、少しでも落ち着きはありません。

/192.168.1.3/Linux/ping 
/192.168.1.5/windows/shutdown 

安らかなルートをたどるべきですか?または、上記は単純なWeb APIで問題ありませんか?

安らかな場合、これに見えますか?

GET /servertypes/{servertypeId}/actions/{actionId}?serverip=192.168.1.4
4

2 に答える 2

2

これは私にとってより理にかなっているようです:

GET /servertypes/{servertypeId}/{serverip}/{action}

于 2013-03-02T23:19:45.347 に答える
0

私の意見では、デザインを再考する必要があります。

コマンド名を URL に配置することで、HTTP メソッドのセマンティクスを効果的にオーバーライドしています。これは、スコープ情報を表すことを目的としています。GETリクエストによって状態が変化することがあってはなりません。基礎となるプロトコルを無視することは、RESTful とは見なされません。

ここにあるのは、REST の原則に実際には適合しない RPC モデルのように見えます。四角いペグを丸い穴に打ち込もうとしているように思えます。

また、基盤となる OS を公開することが本当に必要かどうかも自問する必要があります。システム固有のコマンドを呼び出しますか? 任意の実行可能ファイルまたはいくつかの一般的な実行可能ファイルを実行できるようにする必要がありますか? grepそれが UNIX マシン上にあるのかfindstr、それとも Windows ボックス上にあるのか気にする必要がありますか? クライアントは、Windows マシンと Linux マシンのどちらを使用しているか気にしますか?

Uzar Sajid が提案したものと同様の単純なパターンを使用できます。それはおそらくうまくいくでしょう。RESTful ではないので、RESTful と呼ばないでください。

于 2013-03-02T23:46:13.583 に答える