2013-03-02 74 views
1

我試圖讓我的身邊來表示一個寧靜的方式如下方法正確的方式頭...網址REST方法

說我有服務器的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 

回答

2

這似乎更有意義,對我說:

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

0

在我看來,你應該重新考慮你的設計。

通過在網址中放置命令名稱來實際覆蓋HTTP方法的語義,這些命令名稱旨在表示範圍信息。 GET請求should not lead to changes of state。忽略底層協議不被視爲RESTful。

你在這裏看起來像一個RPC模型,它不符合REST的原則。在我看來,你正在試圖將一個方形釘子錘入一個圓孔。

您還應該問問自己是否真的有必要公開底層操作系統。你想調用系統特定的命令嗎?應該有可能運行任何可執行文件或只是一些常見的?你應該關心在UNIX機器上是grep還是在Windows機器上是findstr?客戶端在使用Windows或Linux機器時是否在意?

你可以去一個類似於Uzar Sajid建議的簡單模式。它可能會工作正常。只是不要將它稱爲RESTful,因爲它不是。

+0

歡呼聲回覆湯姆。 – Adam 2013-03-03 06:29:06

+0

哎呀,我點擊「添加評論」來快速。 – Adam 2013-03-03 06:29:56

+0

歡呼聲回覆湯姆。關於操作系統的一點是需要的,所以正確的命令是運行的,因爲api不知道服務器類型,所以問題應該如何呈現信息我讀過的關於寧靜Apis的所有內容都建議Uzair的URL是不正確的,這就是爲什麼我問這個問題。我不認爲休息是答案,但想要但你的專家的問題。 – Adam 2013-03-03 06:39:46