2013-01-15 91 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