2016-09-18 227 views
3

我很新,API實現從頭開始,我需要一些關於API結構中標準或最佳方法的建議。嵌套路由器vs過濾器

目前我實現包括嵌套路由器(DRF-嵌套路由器包),如

「www.thissite.com/store/21/products/1/」

現在我挖更深Django的,我發現,有過濾器,讓我做以上完全相同的操作,像這樣

「www.thissite.com/products/?store__id=21 & ID = 1」

少一點代碼

我的問題是哪一個是最佳實踐,爲什麼?

回答

0

如果一個產品總是與一個商店有關(這似乎是這種情況,給定名稱),那麼對於REST來說,通過使products成爲stores的子資源來維護分層結構被認爲是最佳實踐。因此,我建議你遵循上述第一種方法。

過濾應該用於基於某些內部特徵(例如類屬性)過濾資源,而不是基於與其他資源的關係。

+0

謝謝,我會這樣做:) –

0

這兩個都是最佳實踐,因爲REST不會限制URI設計。我打電話給www.thissite.com/store/21/products/1/分層URI設計和www.thissite.com/products/?store__id=21&id=1平URI設計。我更喜歡平面設計,但這只是我個人的品味。如果您同時需要store-idproduct-id以識別產品,那麼這些URI是可以接受的,並且任何URI都可以使用這些變量,例如x/y/z/:pid/q/r/s/:sid等等。通過REST創建URI(模板)是服務的職責並且客戶端僅使用超鏈接形式的服務獲得的URI。所以從REST客戶端的角度來看,URI結構並不重要。我們傾向於設計好的URI,只是爲了保持REST服務路由邏輯清晰。