前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django Rest Framework 版本(下)

Django Rest Framework 版本(下)

作者头像
小团子
发布2019-07-18 11:36:02
8680
发布2019-07-18 11:36:02
举报
文章被收录于专栏:数据云团数据云团

Django Rest Framework 版本(上)

<1> HttpRequest 参数传递

① 路由系统

② 视图

③ 配置文件

<2> URL 中定义

在 url 中定义,例如 http://127.0.0.1:8000/api/v1/

① 路由系统

② 视图

<3> 反向解析 URL

在 django 中也提供了一个 url 解析的函数 reverse,不过在 django rest framework 中也有一个将 reverse 函数封装一层的接口可以进行 url 反向解析。

  • 路由系统:加入 namespace 参数
  • 子路由系统:加入 name 参数

<4> 源码解析

① 找到 initial() 方法

从 dispatch 方法进入源码,找到 initial 方法

② 进入 initial() 方法

这里调用了 datermine_version() 方法,并拿到两个返回值封装到 request 中。这时候 request.version_scheme 就是一个版本对象了。

③ 查看具体的 datermine_version() 方法

④ 默认的版本处理对象

可以在 settings.py 文件中配置,全局使用。

⑤ drf 提供的版本类

在 url 反向解析中,调用了 request.versioning_scheme.reverse() 中的 reverse() 方法,说明 request.versioning_scheme 返回的是一个版本对象,可以调用它的方法。

BaseVersioning 基类定义了三个接口

  • datermine_version:返回版本
  • reverse:url 反向解析使用
  • is_allowed_version:就是判断版本号是否合法

而上面使用的两个超类 URLPathVersioning,QueryParameterVersioning 其实也是重写了 datermine_version 和 reverse 两个方法。

<五> 总结

版本的获取方式有多种,在 django rest framework 中也提供了一一对应的处理版本对象,可以根据自己的需要配置,或者继承重写接口使用。

配置也支持全局配置,和局部配置,在全局配置的时候,需要定义默认的版本号,以防万一。在进行 url 反向解析的时候 django rest framework 提供了一个更好的方式。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-02-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据云团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档