Django-rest-framework 是个什么鬼?
Django-rest-framework 是个什么鬼?
我们首先来回顾一下传统的基于模板引擎的 django 开发工作流:
绑定 URL 和视图函数。当用户访问某个 URL 时,调用绑定的视图函数进行处理。
编写视图函数的逻辑。视图中通常涉及数据库的操作。
在视图中渲染 HTML 模板,返回 HTTP 响应。
其实,基于 django-rest-framework 的 RESTful API 的开发,过程是完全类似的:
绑定 URL 和视图函数。当用户访问某个 URL 时,调用绑定的视图函数进行处理。
编写视图函数的逻辑,根据 HTTP 请求类型,对请求的资源进行相应操作,这个过程通常涉及数据库的操作。
使用约定的资源描述格式(例如 XML 或者 JSON)序列化资源并将数据返回给客户端(通过 HTTP 响应)。
对比发现,前两步几乎是完全相同的。不同点在于,在传统的基于模板引擎的开发方式中,资源使用 HTML 文档进行描述并返回给客户端,而在 RESTful API 的开发方式中,资源通常被描述为 JSON 或者 XML 的格式返回给客户端。
有的同学就要问了,虽然 django 的视图函数通常情况下返回 HTML 文档的响应,但是 django 也支持返回 XML 格式或者 JSON 格式的响应,那么为什么还要使用 django-rest-framework 呢?
事实上,的确能够在 django 中返回 JSON 或者 XML 格式的数据,但是 django 框架本身只提供了十分基础的功能。django-rest-framework 是基于 django 的拓展,专为 RESTful API 的开发而设计,提供了十分丰富的辅助类和函数,帮助我们方便地开发 API。下面就来简单介绍 django-rest-framework 为我们提供了哪些功能特性,这些功能和特性我们在接下来的实战中会进一步学习其用法,这里可以先从宏观层面,做一个简单的了解。
内容协商(Content Negotiation)。之前说过,在 RESFful 架构的系统中,资源以某种描述形式在客户端和服务器之间传递,django-rest-framework 根据客户端能够接受的资源格式,自动使用合适的资源描述工具,返回客户端可接受的资源。
认证与鉴权(Authentication and Permission)。客户端对资源的操作通常是受限的,有些资源只能由经过身份认证或具有相应权限的用户才能操作,django-rest-framework 提供了丰富的认证类和鉴权类,帮助我们对用户的身份和权限进行校验。
序列化(Serialization)。django 基于 Python 语言开发,因此资源通常由 Python 对象描述,那么在传递给客户端时,就要进行转换,例如将 Python 对象转换为 JSON 字符串,这个过程就叫做序列化。django 内置的序列化器功能有限,django-rest-framework 提供了功能更加丰富和强大的序列化器,让资源的序列化工作变得异常简单。
各种通用视图(Generic Views)。django 针对 Web 开发中常见的处理逻辑,提供了各种通用视图函数,以提高代码的复用性,减少开发者的工作量。django-rest-framework 同样针对 RESTful API 开发中常见的处理逻辑,提供了各种通用视图函数。
路由自动生成器(Router)。django-rest-framework 根据编写的视图函数,自动生成符合 RESTful 设计的 URL 路由。
文档(Documentation)。django-rest-framework 基于 OpenAPI 模式自动生成 API 文档,无需我们手动编写和维护。
除此以外,django-rest-framework 还提供了分页(Pagination)、API 版本控制(Versioning)、缓存(Caching)、限流(Throtting)等各种功能类。
在接下来的实战教程中,我们会逐一的学习并使用它们。
让我们正式开启 django-rest-framework 的学习之旅吧!
作者:HelloGitHub-追梦人物
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
4月18日云栖号头条:阿里云与广州银行达成战略合作
云栖号:https://yqh.aliyun.com第一手的上云资讯,不同行业精选的上云企业案例库,基于众多成功案例萃取而成的最佳实践,助力您上云决策! 今日最新云头条快讯: 阿里云与广州银行达成战略合作 4月17日,阿里云与广州银行达成战略合作,共同助力中小微企业渡过难关,实现金融+科技价值。据悉,广州银行将通过引入阿里云的云计算、大数据、数据智能、金融科技等技术创新能力,全面推进数字化转型战略。截止目前,已有上万家金融机构借助阿里云新基建进行数字化转型,其中覆盖60%保险企业,50%证券公司,80%已上市商业银行以及上百家银行客户。 两部委:着力解决电商配送“最后一公里”问题 商务部办公厅、国家邮政局办公室发布关于深入推进电子商务与快递物流协同发展工作的通知。通知提出,要着力解决电商配送“最后一公里”问题;加快推动快递车辆便利通行;加强农村快递物流体系建设;深化先进信息技术在电商和快递物流领域应用,支持发展智能服务,不断满足无人车、无人机配送等新需求。 报告:近7成的城市拥堵已经基本恢复,达到去年同期90%以上的状态 根据高德地图联合“国家信息中心大数据发展部” 等机构共同联合发布...
- 下一篇
《深入理解 Java 虚拟机》笔记整理
《深入理解 Java 虚拟机》笔记整理 正文一、Java 内存区域与内存溢出异常1、运行时数据区域程序计数器:当前线程所执行的字节码的行号指示器。线程私有。Java 虚拟机栈:Java 方法执行的内存模型。线程私有。本地方法栈:Native 方法执行的内存模型。线程私有。Java 堆:存放对象实例。分为新生代(Eden 空间、From Survivor 空间、To Survivor 空间)和老年代。线程共享。方法区:存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。也称为“永久代”。线程共享。运行时常量池:方法区的一部分,用于存放编译期生成的各种字面量和符号引用。 线程共享。直接内存。2、对象的创建类加载检查 -> 分配内存 -> 初始化零值 -> 设置对象头 -> 执行 init 方法。 类加载检查:检查 new 指令的参数能否在常量池中定位到一个类的符号引用,以及这个符号引用代表的类是否已被加载、解析和初始化过。分配内存:把一块确定大小的内存从 Java 堆中划分出来。初始化零值:将分配到的内存空间初始化为零值(不包括对象头)。设置对...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8编译安装MySQL8.0.19
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Hadoop3单机部署,实现最简伪集群
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果