一、前言概述在前后端分离开发中,API 文档的重要性不言而喻。Swagger(现更名为 OpenAPI)作为主流的 API 文档生成工具,能自动生成交互式文档,极大提升开发效率。...,提升了 API 描述的精确度OpenAPI 3.0:下一代规范,提供更严格的模式验证、更多数据类型支持和更好的扩展性通过集成 Swagger,开发者可以获得:自动生成的交互式 API 文档在线接口调试功能标准化的...(支持 Swagger 2.0)工具介绍drf-yasg 是基于 Django REST Framework (DRF) 的 API 文档生成工具,专注于 Swagger 2.0 规范,具有以下特点:动态生成...# API schema 生成端点 path('api/schema/', SpectacularAPIView.as_view(), name='schema'), # Swagger...self, request, *args, **kwargs): return self.custom_create(request, *args, **kwargs)接口分组通过 tags 参数对接口进行分组
1、接口文档简述 2、Core API生成接口文档 2.1 安装Core API库 2.2 设置接口文档访问路径 2.3 文档描述说明的定义位置 2.4 访问查看 2.5 补充说明 3、Swagger...上面列出的工具或多或少都需要花费一定时间去手动维护,在drf后端项目中可以利用其自带的Core API、第三方库Swagger以及更好的drf-yasg自动生成接口文档 2、Core API生成接口文档...参考Core API官网以及drf官网,最终生成的接口文档是以网页的方式呈现的,自动接口文档能生成的是继承自APIView及其子类的视图,具体实现流程如下 2.1 安装Core API库 pip3 install...swagger界面给人以清爽简约的感觉,通过展开接口还可以对接口(传参)进行测试 ?...patterns: 自定义的urlpatterns, 该参数直接透传至SchemaGenerator urlconf: 描述从哪个文件获取路由配置, 缺省值是urls, 该参数直接透传至SchemaGenerator
视图集是 DRF 提供的用于统一管理多个相关视图逻辑的类。...六. api-root 的作用功能:DefaultRouter 自动生成的根路径(/)会列出所有注册的视图集端点。...ModelViewSet使用场景适用场景:标准 CRUD 接口(如后台管理 API)。...ReadOnlyModelViewSet使用场景适用场景:只读接口(如公开的数据查询 API)。...视图集中 @action 装饰器的使用@action 是 DRF 中用于在视图集(ViewSet)中定义自定义动作的核心装饰器,可以将任意方法暴露为 API 端点。下面通过更多场景详细说明其用法。
DRF还提供了许多其他视图类型和装饰器,可以根据需要使用。视图还可以根据需要组合和嵌套。例如,我们可以将一个视图嵌套在另一个视图中,以构建复杂的API端点。...以下是一个嵌套视图的示例:from rest_framework import genericsfrom .serializers import AuthorSerializer, BookSerializerfrom...AuthorDetail视图嵌套了AuthorBooks视图,用于显示特定作者的书籍列表。在AuthorDetail视图中,我们首先获取当前作者对象,然后将其序列化并将其书籍列表添加到序列化数据中。...我们使用了AuthorBooks视图的实例来获取书籍列表,并将其数据添加到序列化数据中。在这里,我们还将request对象传递给序列化器和视图,以便可以在序列化器中访问它。
DRF介绍 DRF是Django Rest Framework单词的简写,是在Django框架中实现Restful API的一个插件,使用他可以非常方便的实现接口数据的返回。...Django中也可以使用JsonResponse直接返回json格式的数据,但是DRF相比直接使用Django返回json数据有以下几个好处: 可以自动生成API文档,在前后端分离开发的时候进行沟通比较有用...安装DRF 安装drf之前,需要以下依赖 Python (3.5, 3.6, 3.7) Django (1.11, 2.0, 2.1, 2.2, 3.0) 准备好以上依赖后,可以通过以下命令安装 pip3...'rest_framework', ] drf知识体系 接口:什么是接口、restful接口规范 CBV生命周期源码 – 基于restful规范下的CBV接口 请求组件、解析组件、响应组件 序列化组件(...灵魂) 三大认证(重中之重):认证、权限(权限六表)、频率 其他组件:过滤、筛选、排序、分页、路由 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/165781.html
DRF自动生成OpenAPI文档 API schemas是非常有用的,可以帮助我们生成接口文档以及可与API交互的动态客户端。...安装和配置 使用 经过上面的基本配置,我们现在访问api/schema/swagger-ui/来查看swagger-ui风格的文档,如下所示: 当你点击schema的时候,就会显示响应字段的描述...中的描述,description是来自于序列化器的文档字符串,而各个字段的title是来自于字段的label,带有*的意味着是必传的字段,除此之外,字段的其它描述是直接取自序列化器字段中的参数。...另外,对于该接口的描述也是直接来自文档字符串的内容。...,都在序列化器中描述了,但是对于URL参数,是默认没有描述的。
这些数据某些情况下也会作为合法数据返回 if results is not None: data['results'] = results # data响应的其他内容...## Car群查接口 from rest_framework.generics import ListAPIView from . import models # 1)drf的SearchFilter...## Car群查接口 from rest_framework.generics import ListAPIView from . import models # 1)drf的SearchFilter...大总结 接口 """ 1、什么是接口:url+请求参数+响应数据 | 接口文档 2、接口规范: url:https,api,资源(名词复数),v1,get|post表示操作资源的方式,?...:次数/时间 iii)get_cache_key返回的是与限制条件有关的动态字符串 - 限制条件来源于请求参数或请求头 iv)全局局部配置 4、jwt认证: i)客户端存
快速构建 API:通过 DRF 的封装类(如 APIView、ModelSerializer)减少重复代码。功能丰富:内置认证、权限、分页、过滤等常用功能。...二、适用场景前后端分离项目(如为 Vue/React 提供数据接口)。移动应用(iOS/Android)后端 API。快速开发企业级数据管理后台。...三、实现一个简单接口第 1 步:安装配置 DRF安装 DRF:pip install djangorestframework创建book应用python manage.py startapp book配置...'rest_framework', # 添加 DRF 'your_app', # 你的应用(需提前创建)book]REST_FRAMEWORK =...端点:浏览器或工具访问:http://localhost:8000/api/books/预期 JSON 响应:[ { "title": "Python编程", "author
2. version/'vɝʒn/版本,这个在计算机上面很常见,在DRF框架中的RESTful设计风格中有一种规范,就是将api的版本号放入url中,如下:(1.0即版本号) http://www.example.com...淡然这只是设计风格,如果你几百个接口有那么几个用了动词也是符合Restful设计风格的。 4. filter/'fɪltɚ/过滤,我们在DRF框架的高级功能中,就有过滤这一项。...可以在url地址中传参数,我们进行过滤。 5. StatusCodes状态码,当然我们在用的时候都是直接使用了status状态这个单词用来表示状态码了。...HypermediaAPI超媒体,这个也是理解即可,RESTful API最好做到Hypermedia(即返回结果中提供链接,连向其他API方法),使得用户不查文档,也知道下一步应该做什么。...# 指明该视图在进行序列化或反序列化时使用的序列化器 serializer_class = BookInfoSerializer 23.通用参数: 参数名称 说明 read_only 表明该字段仅用于序列化输出
1.Restful API接口实现 1.1需求实现思路 1、获取指定的图书信息: 1)根据pk获取指定的图书对象(pk由查询字符串的形式传给后端) 2)将图书的json数据返回,状态码:200 2、修改指定的图书信息...2.明确RestAPI接口实现时的主要工作 2.1序列化&反序列化 把程序中的数据结构类型转换为其他格式的数据,这个过程叫做序列化的过程 例:将模型类对象转换为字典或者json数据的过程,就叫做序列化的过程...3.DRF框架 作用:大大提高RestAPI接口开发效率 简介: Django REST framework 框架是一个用于构建Web API 的强大而又灵活的工具。...3.2见识DRF的魅力 我们仍以在学习Django框架时使用的图书英雄为案例,使用Django REST framework快速实现图书的REST API。 3.2.1....create需要传一个参数validated_data,它是校验之后的数据(数据类型是字典)。**validated_data是对这个字典进行拆包。
Django REST Framework(以下简称DRF)是基于Django框架构建的Web API框架。...在DRF中,路由器(Router)是一个非常有用的工具,可以帮助我们轻松地定义API的路由,实现快速、可维护的API开发。一、路由器的作用在DRF中,路由器的主要作用是将URL和视图函数绑定在一起。...路由器可以根据视图函数的名称和参数,自动生成URL,并将请求分发到对应的视图函数中。使用路由器可以避免手动编写URL配置的繁琐和容易出错。二、路由器的使用安装DRF在使用路由器之前,需要先安装DRF。...使用视图集需要先定义一个继承自ModelViewSet或ViewSet的类,然后将这个类传递给路由器的register方法即可。...这个方法需要将视图函数包装成APIView或View的子类,然后将这个类的实例传递给路由器的register方法即可。
充满激情,认真做好每一件事,重要的不是结果,而是过程。不要攀比,不要嘲笑某人,因为每个人都有其他人无法比的一些闪光点。...无聊的一生平平淡淡,难道你到了这个世上只是为了呼吸一下空气,看看其他人的辉煌美好吗?...装饰器的作用:访问接口的时候,会先到缓存中进行获取,没有的话才会执行接口函数。...业务逻辑: 1.先设置用户权限,只有认证用户才可以对此接口进行访问。 2.判断用户的地址数量是否超过上限。 3.获取参数并进行校验(参数完整性,手机号格式,邮箱格式)。 4.创建并保存新增地址数据。...2.获取title参数并校验(title必传)。 3.修改指定地址的标题并更新数据库。 4.返回应答,设置标题成功。
它可以自动帮我们提取接口中的信息,从而形成接口文档,而且内容十分详细,再也不用为写接口文档而心烦了 这个库主要实现了3个目标 从DRF中提取更多的schema信息 提供灵活性,使schema在现实世界中可用...有健全的默认设置,非常好用开箱即用,不需要指定任何设置,但我们建议至少指定一些元数据 SPECTACULAR_SETTINGS = { 'TITLE': 'API接口文档', 'DESCRIPTION...,访问http://127.0.0.1:8000/api/schema/swagger-ui/,就会出现接口文档 我们可以看到图上有我们之前在settings.py中配置的TITLE和DESCRIPTION...部分或完全的覆盖去产生些东西 先来看下几个初始化参数 operation_id:一个唯一标识ID,基本用不到 parameters:添加到列表中的附加或替换参数去自动发现字段。...", versions=["v1"] ) 最后我们就能看到完整的接口文档了 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/164822
什么是RESTFUl RESTful 是目前最流行的 API 设计规范,用于 Web 数据接口的设计。 ...2.6 过滤信息(filtering,或称查询参数) 如果记录数量很多,服务器不可能都将它们返回给用户。API应该提供参数,过滤返回结果。 下面是一些常见的参数。 ?...animal_type_id=1:指定筛选条件 参数的设计允许存在冗余,即允许API路径和URL参数偶尔有重复。比如,GET /zoo/ID/animals 与 GET /animals?...三 Django RestFramework(简称DRF) drf是django发展来的一个符合restful接口规范的一个东西,啥东西呢,就是django的一个app,还记得app是啥不。...DRF官网地址,但是大家记住一句话,即便是没有这drf,我们照样能做前后端分离的项目,自己做规范的数据接口,返回json数据,都是没问题的昂,那为什么还用drf啊,这个更nb。
前言 如果我们不用使用drf那套认证规则,我们想自定义认证类,那么我们首先要知道,drf本身是如何定义认证规则的,也就是要查看它的源码是如何写的 源码分析 源码的入口在APIView.py文件下的dispatch...方法,request代表的是drf的Request,所以我们进入drf的Request类中查找user方法属性,源码如下: def user(self): """...get ok") 然后我们访问视图,在headers中不传Authorization 代表游客,游客可以访问成功 { "statusCode": 0, "message": "drf...get ok" } 接着我们在请求头中只传auth 访问视图会抛出异常信息 { "detail": "认证信息有误,非法用户" } 然后我们在请求头中传入错误的认证,auth 111..."statusCode": 0, "message": "drf get ok" } 以上的测试,就代表我们自定义的认证类起作用了 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn
概述 在Java 8中引入的forEach循环为程序员提供了一种新的,简洁而有趣的迭代集合的方式。...在本文中,我们将看到如何将forEach与集合一起使用,它采用何种参数以及此循环与增强的for循环的不同之处。...8开始具有一个新的 API: void forEach(Consumer的操作,就像任何其他迭代器一样。...要执行的操作包含在实现Consumer接口的类中,并作为参数传递给forEach 。 所述消费者接口是一个功能接口(具有单个抽象方法的接口)。它接受输入并且不返回任何结果。
""" 接口:联系两个物质的媒介,完成信息交互 web程序中:联系前台页面与后台数据库的媒介 web接口组成: url:长得像返回数据的url链接 请求参数:前台按照指定的key提供数据给后台...:url、响应数据 注:如果将请求参数也纳入考量范围,那就是在写接口文档 ---- RESTful API设计 URL: 1) 用api关键字标识接口url api.baidu.com | www.baidu.com...DELETE /collection/resource:返回一个空文档 Hypermedia API,RESTful API最好做到Hypermedia,即返回结果中提供链接,连向其他API方法,使得用户不查文档..._request就是原生request # 2) 原生request对象的属性和方法都可以被drf的request对象直接访问(兼容) # 3) drf请求的所有url拼接参数均被解析到query_params...: """ 1、接口:url+请求参数+响应参数 Postman发送接口请求的工具 method: GET url: https://api.map.baidu.com
在使用DRF的时候,通常的文档有:默认文档RestFrameWork、CoreAPI、Swagger,Swagger是最流行的API文档库,在绝大多数服务端开发中都有用到,之前我们使用了CoreAPI来生成文档...,一方面是它不够流行,没办法和其他工具结合,另一方面可能是我不熟悉,所有有些接口并不能按照我们的要求来使用。...在默认生成的swagger界面上,我们看到的情况与理解的一样,对于JSON参数的请求是没有问题的,我们只需要输入必填的字段就可以了,但是如果是form-data参数,虽然显示的依然不包含read_only...(github.com) 对于以上问题我们有两种解决方式: 只使用JSON格式的请求参数,缺点是必填和选填参数搞不清楚 在后端序列化的时候,针对不同的请求,明确的定义相对应的序列化类来处理,缺点是后端代码变多了...目前我采用的是第一种方式,宁愿API不明确一点,也不能增加后端的复制程度。
app项目中新建serializers.py文件,接下来可以正式编写序列化类了 序列化类编写 # Serializer的构造函数的参数: # 1. instance:需要传递一个orm对象,或者是一个...queryset对象,用来将orm转成json # 2. data:把需要验证的数据传递给data,用来验证这些数据是不是符合要求 # 3. many:如果instance是一个queryset对象,那么就需要设置为...22周岁以上才能结婚"}) return attrs 我们上面代码首先定义了序列化的字段,字段中的参数都继承自Field类,参数如下 def __init__(self, read_only...json的格式返回给了前台 POST请求 同样打开接口工具,输入127.0.0.1:8000/drf/student/,在body中选择json格式,输入如下数据 { "name": "aaaa...,如果某些字段不入库,可以将值取出校验 重写create方法,完成校验通过的数据入库工作,得到新增的对象 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/164896
上面同样是官网的介绍,我稍微翻译一下: 提供了可视化的API调试界面,开发者可以在线测试接口 提供了各种开箱即用的API认证授权工具,如OAuth2 提供了orm数据序和非orm数据的序列化支持 支持函数视图...大量的文档和社区支持 上面的说法可能不够直观,我站在API提供者的角度来列举几个好处: 安装到Django工程中,你就能在Django中提供Restful接口了 你可以在一个Web页面上浏览自己提供了哪些...API,并且可以通过这个页面测试这些API 你不用自己写一套接口鉴权代码了 你不用自己写大量的CRUD接口了,简单配置即可 你不用自己写大量的条件查询接口了,简单配置即可 你不用自己写后台分页逻辑了,简单配置即可...你不用自己写接口限流逻辑了,简单配置即可 你不用自己写各种简单的参数校验逻辑了,简单配置即可 你不用自己注册各种路由了,简单配置即可 你的权限控制逻辑不用写到业务逻辑中了 ......image.png 再来看这张图,借助DRF,我们可以将接口的开发过程规范化,形成一个统一的代码工作流:Serializers负责数据的序列化和反序列化,结合Validators可以低成本的实现参数校验