2013-01-15 92 views
1

我正在設計一個REST API。REST API狀態更改

我有一個資源,我希望能夠更改不同條件的狀態,例如URI是:

應用/ {APPLICATION_ID}/

可能的狀態變化都將應用設置爲:取消

  • SignedOff
  • 保持
    1. 每個狀態更改都需要不同信息例如一個被取消的原因,一個簽約的日期。

      什麼是一個好看的URI來處理這個問題?我原以爲

      1. POST的:應用程序/ {APPLICATION_ID} /取消
      2. POST:應用/ {APPLICATION_ID} /簽收
      3. POST:應用/ {APPLICATION_ID} /保持

      但它似乎不適合我。

      編輯:

      我應該提到,我已經打算 POST:應用/ {} APPLICATION_ID 更新了全套的應用程序數據的現有應用程序。

    回答

    0
    POST: Applications/{application_id}?cancel=true 
    

    POST僅用於CREATE。我認爲這會是更好的選擇。

    +0

    對。我爲我的API使用Taffy框架,並且通常使用POST/GET方法來確定您是在更改信息還是僅僅獲取它。然後你會張貼參數來改變你想要的信息。雖然如果你按照你的模式,你可能想扭轉你的想法。 'Applicatins /取消/ id'。它更容易閱讀。 – Leeish

    +0

    取消,簽收,保留是動詞。儘管這是一個着名的問題。 Like Orders可以被取消或刪除。你如何區分呢?最常見的答案是使用查詢參數,如cancel = true,signoff = true或hold = true。當你做GET有一個元素 true false那樣。 – Satish

    1

    我會堅持一個URL爲所有狀態並讓您的狀態對象封裝所有不同的屬性。這些可以讓你的網址避免看起來像動作並且更加寧靜。

    POST: Applications/{application_id}/status 
    
    public class Status 
    { 
        public string StatusType {get;set;} 
        public string CancelReason {get;set;} 
        public string SignOffDate {get;set;} 
        ... 
    } 
    
    +0

    這也是一個不錯的解決方案。 – Leeish