IT评测·应用市场-qidao123.com技术社区
标题:
DRF-API学习-Routers
[打印本页]
作者:
惊雷无声
时间:
2024-8-20 03:31
标题:
DRF-API学习-Routers
使用示例:
from rest_framework import routers
router = routers.SimpleRouter()
router.register(r'users', UserViewSet)
router.register(r'accounts', AccountViewSet)
urlpatterns = router.urls
复制代码
有两个欺压参数register()方法:
prefix-要用于这组路由的URL前缀。
viewset-viewset类。
另有一个附加参数:
basename: 用于创建URL名称
上面的示例会生成以下URL模式:
user-list: ^user/$
user-detail: user/{pk}
知识点
资源路由
:DRF 提供了一种快速声明给定资源控制器的所有常见路由的方法。它允许在一行代码中声明资源路由,而不是为索引(index)、详情(detail)等单独声明路由。
使用示例
:
通过 SimpleRouter 可以快速设置 URL 配置。
使用 register() 方法注册路由,需要提供 URL 前缀和视图集(viewset)类。
可选参数 basename 用于为生成的 URL 名称提供基础名称。
生成的 URL 模式
:例如,注册用户和账户的视图集将生成列表和详情的 URL 模式。
使用 include 函数
:可以以多种方式将路由的 URL 模式包含在项目的 URL 配置中。
命名空间
:使用 include 时可以指定应用程序命名空间,这对于使用超链接序列化器时保持一致性很紧张。
额外的路由动作
:通过使用 @action 装饰器,可以在视图集中标记额外的动作以进行路由。
SimpleRouter 和 DefaultRouter
:两者都包括标准的 CRUD 操作路由,但 DefaultRouter 还包括一个默认的 API 根视图。
自定义路由器
:如果需要特定的 URL 结构,可以通过扩展现有的路由器类来实现自定义路由器。
动态路由的自定义
:可以使用 DynamicRoute 命名元组来自定义 @action 装饰器的路由。
高级自定义路由器
:通过覆盖 BaseRouter 和 get_urls(self) 方法,可以提供完全自定义的举动。
第三方包
:文如 drf-nested-routers 和 wq.db.rest 中的 ModelRouter,以及 DRF-extensions 包。
SimpleRouter和DefaultRouter
SimpleRouter 和 DefaultRouter 都是 Django REST framework 中用于自动生成 URL 路由的工具。
SimpleRouter
:
特点:提供了基本的路由规则,用于常见的视图操作,如列表、创建、检索、更新、部分更新和删除。
使用方法:创建一个 SimpleRouter 对象,然后使用 register 方法注册视图集。
示例:
from rest_framework.routers import SimpleRouter
from your_app.views import YourViewSet
router = SimpleRouter()
router.register('your_resource', YourViewSet)
复制代码
DefaultRouter
:
特点:除了包含 SimpleRouter 的功能外,还额外提供了一个根视图,表现 API 的所有可用路由的列表。
使用方法:与 SimpleRouter 类似,创建并注册视图集。
示例:
from rest_framework.routers import DefaultRouter
from your_app.views import YourViewSet
router = DefaultRouter()
router.register('your_resource', YourViewSet)
复制代码
差别点
:
DefaultRouter 提供了一个根路由,展示所有已注册的路由信息,方便开辟者和用户查看 API 的整体结构。而 SimpleRouter 没有这个根路由。
选择
:
如果您只需要基本的路由功能,而且不需要展示 API 的整体路由结构,SimpleRouter 就足够了。
如果您盼望有一个根路由来展示所有可用的路由,方便文档和调试,大概您盼望为用户提供一个快速查看 API 结构的入口,那么 DefaultRouter 是更好的选择。
通常,如果没有特殊需求,DefaultRouter 因为其便利性和额外的根路由功能,被更广泛地使用。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 IT评测·应用市场-qidao123.com技术社区 (https://dis.qidao123.com/)
Powered by Discuz! X3.4