2017-07-14 29 views
-1

方案的最佳實踐。REST風格的設計:</p> <p>我有一些資源,<code>Foo</code>,這0..N子資源,<code>Bar</code>:兒童資源創建

有一個endpoint- http://resource/foo - 支持GET獲取所有Foo資源列表和POST父服務器上創建富的新實例。

有一個endpoint- http://resource/foo/:fooId: - 支持GET去取Foo資源,PATCH更新Foo資源,DELETE刪除Foo資源。

有一個endpoint- http://resource/foo/:fooId:/bar - 支持GET在給定的Foo獲取所有Bar資源列表,並POST在給定富創造的Bar一個新的實例。

應該POSThttp://resource/foo支持創建Foo直接一些Bar孩子,還是應該建立兒童只能由不同的額外POSTshttp://resource/foo/:fooId:/bar創建初期的Foo後支持?

+0

很多時候,最合乎邏輯的方法是有一個像'POST/bars'這樣的端點。請求體將是構建一個包含相關foo的標識符的bar所需的屬性的表示。像'/ foos /:id/bars'這樣的端點更像是一個「快捷方式」或過濾端點,用於提供'/ bars'集合的過濾版本,並且通常只支持'GET'請求。然而,我所說的沒有一條是硬性規定;更像是好的指導方針。 –

回答

-1

遺憾的是這樣的問題沒有共同的答案,因爲你需要考慮的業務領域和你的API正在(性能,公衆可獲得,標準,現有的端點的設計方式等)的環境和巨大的其他列表因素。然而,從商業的角度出發是件好事,因爲任何代碼都是爲了解決現實世界的問題。

您可以詢問youself以下問題開始:

  • 是否Foo(作爲現實世界的實體)是有道理的,沒有任何附加Bar

或類似的東西:

Bar可選的創建Foo的時刻?

如果您看到它是可選的,則將Bar作爲子資源並獨立處理Bar的收集/實例。例如,使用hal將Bar添加爲嵌入資源,那將非常有效,並且使父子關係透明。儘可能簡化資源並儘可能減少耦合,這對於REST API是一個很好的策略。

相關問題