嵌套路由器vs过滤器

嵌套路由器vs过滤器

问题描述:

我很新,API实现从头开始,我需要一些关于API结构中标准或最佳方法的建议。嵌套路由器vs过滤器

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

“www.thissite.com/store/21/products/1/”

现在我挖更深Django的,我发现,有过滤器,让我做以上完全相同的操作,像这样

“www.thissite.com/products/?store__id=21 & ID = 1”

少一点代码

我的问题是哪一个是最佳实践,为什么?

如果一个产品总是与一个商店有关(这似乎是这种情况,给定名称),那么对于REST来说,通过使products成为stores的子资源来维护分层结构被认为是最佳实践。因此,我建议你遵循上述第一种方法。

过滤应该用于基于某些内部特征(例如类属性)过滤资源,而不是基于与其他资源的关系。

+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服务路由逻辑清晰。