2013-04-04 71 views
5

是否有一種實現此功能的慣用方式:PUT或POST的REST「幹運行」選項

我需要PUT/POST給定實體。但是,在實際應用之前,我需要在一個更加不穩定的系統上做一些更改,如果有效,我會繼續。

因此,我會先問PUT/POST是否可以接受,然後再實際執行PUT/POST。

我以爲只是使用「幹運行」查詢參數,但它不覺得像正確的方式。

更新:試圖澄清我的問題。重點是第一個PUT僅用於驗證實體。

Me   System A  Volatile System X 
| Dry PUT |     : 
|-------------->|     : 
|    |     : 
| 20x/40x |     : 
|<--------------|     : 
|    :     : 
| Upon PUT OK do some related work : 
|----------------------------------->| 
|    :     | 
| Work completely     | 
|<-----------------------------------| 
|    : 
|PUT (for real) : 
|-------------->| 
|    | 
|  20x  | 
|<--------------| 
+1

我想「正確的做法」就是做一個完整的PUT,如果PUT不可接受,服務器應該返回一些4xx錯誤。 – sharptooth 2013-04-04 14:41:50

+0

問題是;如果通過它將在另一個系統改變之前被保存;這可能無法通過,導致系統處於衝突狀態。 – thoredge 2013-04-04 14:58:49

+1

然後它不應該「通過」,它應該返回一個4xx錯誤代碼。 – sharptooth 2013-04-05 07:48:27

回答

0

從邏輯上講,我覺得這可能可以通過某種國有財產來解決。如果你正在使用JSON,你可以例如考慮增加一個屬性是這樣的:

{ 
    "draft" : true 
} 

當你第一次做PUT請求,您標記項爲草稿。它存儲該項目,但沒有做任何事情。

您的服務器接受請求後,你就可以做你的「相關工作」萬無一失,如果成功了,以及你可以提交其他PUT請求相同的資源,此時設置draftfalse