django - 嵌套路由器与过滤器

标签 django rest django-rest-framework drf-nested-routers

我对 API 实现从头开始非常陌生,我需要一些关于 API 结构中的标准或最佳方法的建议。

目前我的实现包括嵌套路由器(drf-nested-routers 包),例如

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

现在,当我深入了解 django 时,我发现有一些过滤器可以让我用更少的代码执行上面完全相同的操作

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

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

最佳答案

两者都是最佳实践,因为 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 服务路由逻辑清晰。

关于django - 嵌套路由器与过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39563117/

相关文章:

iphone - 有适用于 iOS 的 RESTful YouTube API 吗?

node.js - 如何在 Hapi 中正确处理错误?

django - 父模型(包括子模型)的序列化

python - 在 Django 1.3 media_url 与 static_url 中显示样式

python - Django Update 和 CreateView 使用相同的 Crispy Form,添加 View 错误

python - Django:运行自定义命令时跳过系统检查

django - 赋值前引用的局部变量 'context'

json - 在 JSON 响应中省略结构字段

python - 通过 API 调用发送大字典会中断开发服务器

python - Django Rest Framework ListField 和 DictField