Code前端首页关于Code前端联系我们

Django REST 框架教程:它是什么?

terry 2年前 (2023-09-24) 阅读数 55 #后端开发

随着前端技术的演进,前后端分离的开发方式越来越流行。规模稍大的公司大多采用前后端分离的开发方式。在这种开发方式中,后端软件只需要关注业务逻辑,通过接口返回业务数据。不需要了解HTML、CSS和JavaScript等前端语言(当然作为优秀的开发人员)(虽然不再需要编写,但仍然需要了解这些);对于前端程序员,可以使用Vue、React等优秀的js框架,以及Webpack等打包工具来专注于页面开发。连接它们的桥梁就是前后端数据交互的接口规范。

现在最流行的数据交互接口规范当然是REST规范。 REST的全称是Representational State Transfer,意思是“表示层状态转换”。简单来说,在符合REST原则的RESTful架构中,一个URL就代表了某种网络资源。网络资源可以指博客文章、图像、歌曲或服务。资源通常以标准化格式描述。描述资源的格式有很多种。例如,HTML 文档是一种描述形式。在此之前,XML 是最常用的格式,但现在越来越多的系统使用 JSON,这是一种更轻量级的描述形式。当客户端和服务器交互时,资源以所描述的格式传输。客户端使用HTTP协议,充分利用HTTP协议的动词(如GET、POST)来表达自己对服务器资源进行某些操作的意图。例如,GET用于获取资源,POST用于创建新资源(也可以用于更新资源)。资源),PUT 用于更新资源,DELETE 用于删除资源。

因此,假设我们的系统采用RESTful架构,对于前端工程师来说,他的工作就是根据渲染的页面向后端发起RESTful风格的HTTP请求,获取接口返回的数据,并渲染前端页面。对于后端程序员来说,需要编写接口,解释前端发送的请求,对资源进行适当的操作并返回前端所需的数据。

如何解释前端请求,如何使用指定格式描述和交付资源等。Django本身并没有提供这样的处理框架,但是Django的第三方扩展-django-rest-framework是一组专门用于开发符合REST规范的RESTful接口的框架。可以说,在当前前后端分离的环境下,django的开发基本上离不开Django框架的其余部分。因此,在接下来的教程中,我们将全面学习django-rest框架的使用。

让我们基于模板引擎修改传统的Django开发流程:

  1. 绑定URL和视图功能。当用户访问URL时,会调用绑定的视图函数进行处理。
  2. 编写视图函数的逻辑。视图通常包含数据库操作。
  3. 在视图中呈现 HTML 模板并返回 HTTP 响应。

其实基于django-rest-framework的RESTful API的开发流程完全类似:

  1. 绑定URL和视图功能。当用户访问URL时,会调用绑定的视图函数进行处理。
  2. 编写视图函数的逻辑,根据HTTP请求类型对请求的资源进行相应的操作。这个过程通常会涉及到数据库操作。
  3. 使用商定的资源描述格式(例如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 为我们提供了哪些特性和功能。我们将在接下来的实战中继续学习如何使用这些功能和特性。这里我们可以先对宏观层面进行一个简单的了解。

  • 内容协商。前面提到,在RESFful架构系统中,资源以某种描述形式在客户端和服务器之间传递。 django-rest-framework 根据客户端可接受的资源格式,自动使用合适的资源描述工具返回给客户端。客户可以接受的资源。
  • 身份验证和许可。客户端对资源的操作通常是有限的。某些资源只能由经过身份验证或具有适当权限的用户操作。 django-rest-framework提供了丰富的认证类和鉴权类来帮助我们控制用户操作。身份和权限均经过验证。
  • 序列化。 Django是基于Python语言开发的,因此资源通常通过Python对象来描述。当传递给客户端时,它们需要进行转换,例如将Python对象转换为JSON字符串。这个过程称为序列化。 Django 的内置序列化器功能有限。 django-rest-framework 提供了一个具有更丰富、更强大功能的序列化器,这使得序列化资源变得极其容易。
  • 各种通用视图。 Django针对Web开发中常见的处理逻辑提供了几种常用的搜索功能,以提高代码的复用性,减少开发人员的工作量。 django-rest-framework还提供了几个通用的视图函数,用于通用处理逻辑和RESTful API开发。
  • 路线自动生成器(路由器)。 django-rest-framework 根据编写的视图函数自动生成符合 RESTful 设计的 URL 路由。
  • 文档。 django-rest-framework基于OpenAPI模式自动生成API文档,无需我们手动编写和维护。

此外,django-rest框架还提供了分页(pagination)、API版本控制(versioning)、缓存(caching)、限流(throtting)等各种功能类。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门