2011-07-07 55 views
0

但是我沒有太多的創建Web服務的經驗,但是我花了很多時間與它們連接。如果網絡服務調用中提供的參數包含在響應中

我想知道是否有一個最好的做法,說明請求中提供的天氣或不參數應該包含在響應中。

E.g.

請求:

a.com/getStuff?key=123 

(JSON)響應:

{"key":"123", 
"value":"abc"} 

或..

(JSON)響應:

{"value":"abc"} 

我更喜歡更詳細的第一個選項,因爲它不強制執行請求和響應之間的耦合。即響應不關心請求是什麼,所以你不需要傳遞狀態。

是否有最佳做法?

回答

1

如果您在數據庫或其他實體中引用了一個由整數,GUID或特定格式字符串值唯一標識的記錄,則應該返回該唯一ID與響應,特別是如果您打算允許用戶更新該實體或在隨後的操作中引用它以創建相關數據或搜索相關數據。

如果您要返回可能由多個記錄值或環境特定數據(例如「我的服務器上有多少可用磁盤空間?」)組成的派生值,則所提供的參數將不會「 t表示答覆中的任何內容,因此不應退回。

您的關於耦合請求 - 響應的觀點是正確的。如果您正在進行多個同步異步調用,那麼在處理響應時,鍵值非常有用。

1

參考你的例子:我認爲id應該總是你的情況JSON的資源表示的一部分)。代表應該儘可能自我解釋和自我引薦。在一個id屬性/場我還想使用鏈接字段的頂部:

{ 
    "id":123, 
    "link":{ 
     "href":"http://api.com/item/123", 
     "rel":"self" 
    }, 
    otherData... 
}

如果你的榜樣GET /getStuff?key=123更多的是搜索(參數看起來有點像),那麼好向用戶提供搜索的「摘要」:

 
{ 
    "items":[{ 
      item1... 
     }, 
     { 
      item2... 
     } 
    ], 
    "submitted-params":{ 
     "key":"123", 
     "other-param":"paramValue" 
    } 
} 
相關問題