2013-01-18 46 views
2

當創建一個restful API時,最好讓客戶端發送對象名稱或屬性。例如體內POST /人/API Params - {person:{name:'John'}} vs {name:'John'}

選項1: {人:名稱: '約翰'}

選項2: {名稱: '約翰'}

我通常在大多數API中看到選項2,但我遇到了一個棘手的問題。我使用的是Rails,所以如果我想要處理html和json請求的操作,不需要使用選項1(因爲Rails以對象類型爲前綴形式發送參數)?

對於其中一個選項有沒有優點/缺點?

回答

2

大多數時間發送{person: {name: 'John'}}是不必要的,因爲當您POST'ing或GET'ing時,您通常會知道基於URL的預期或發送的響應類型(在本例中爲'person')。

然而,選項1有用例。使用選項2,您依賴的是GET'ing/POST'ing URL來輸入信息 - 它並未在JSON中明確聲明。這可能很好,就像您從/service/person/{id}獲得的那樣,{person: {name: 'John'}}上的'person'標記是多餘的。但是,如果您有更類似RPC的服務(例如您開機自檢的服務來驗證您的有效負載:/service/validate或其他類似服務),則可能需要額外的信息,以便服務可以確定類型。