当前位置: 首页 > wzjs >正文

南京模板网站开发wordpress最新版核心

南京模板网站开发,wordpress最新版核心,汽车行业网站建设维护服务,品牌策划方案怎么写Django DRF API 编写规范(包含 OpenAPI 生成规则) 为了确保 Django DRF API 代码的可维护性、可扩展性,同时生成清晰、规范、结构层次分明的 OpenAPI 文档,必须遵循以下规则。 一、使用 drf-spectacular 生成 OpenAPI 文档 &…

Django DRF API 编写规范(包含 OpenAPI 生成规则)

为了确保 Django DRF API 代码的可维护性、可扩展性,同时生成清晰、规范、结构层次分明的 OpenAPI 文档,必须遵循以下规则。


一、使用 drf-spectacular 生成 OpenAPI 文档

(一)安装 drf-spectacular

pip install drf-spectacular

(二)配置 settings.py

INSTALLED_APPS = ['drf_spectacular','rest_framework',
]REST_FRAMEWORK = {'DEFAULT_SCHEMA_CLASS': 'drf_spectacular.openapi.AutoSchema',
}SPECTACULAR_SETTINGS = {'TITLE': "My API",'DESCRIPTION': "项目 API 文档",'VERSION': '1.0.0','SERVE_INCLUDE_SCHEMA': False,'SWAGGER_UI_SETTINGS': {'deepLinking': True,'defaultModelRendering': 'model','defaultModelsExpandDepth': 2,},
}

(三)添加 OpenAPI 路由

from drf_spectacular.views import SpectacularAPIView, SpectacularSwaggerView, SpectacularRedocViewurlpatterns = [path('api/schema/', SpectacularAPIView.as_view(), name='schema'),path('api/docs/', SpectacularSwaggerView.as_view(url_name='schema'), name='swagger-ui'),path('api/redoc/', SpectacularRedocView.as_view(url_name='schema'), name='redoc'),
]
  • 访问 /api/docs/:Swagger UI
  • 访问 /api/redoc/:ReDoc

二、编写清晰的 API 视图

(一)使用 @extend_schema 详细描述 API

from drf_spectacular.utils import extend_schema
from rest_framework.viewsets import ModelViewSet
from .models import User
from .serializers import UserSerializerclass UserViewSet(ModelViewSet):queryset = User.objects.all()serializer_class = UserSerializer@extend_schema(summary="获取用户列表",description="返回所有用户的列表,支持分页。",responses={200: UserSerializer(many=True)})def list(self, request, *args, **kwargs):return super().list(request, *args, **kwargs)
📌 规则
  1. @extend_schema(summary="简要说明", description="详细描述") 用于丰富 API 文档。
  2. responses={200: UserSerializer(many=True)} 确保文档显示正确的返回格式。

三、在 serializers.py 里优化文档

(一)使用 help_textverbose_name 提供字段说明

from rest_framework import serializers
from .models import Userclass UserSerializer(serializers.ModelSerializer):username = serializers.CharField(help_text="用户名,唯一标识")email = serializers.EmailField(help_text="用户的电子邮箱地址")class Meta:model = Userfields = ["id", "username", "email"]
📌 规则
  1. help_text:用于 API 文档中展示字段说明。
  2. verbose_name:如果模型里定义了,会自动生成为字段的描述。

四、使用 @extend_schema_viewViewSet 更清晰

如果 ViewSet 里的方法较多,每个方法都写 @extend_schema 会很冗余,可以直接给整个 ViewSet 统一定义:

from drf_spectacular.utils import extend_schema_view@extend_schema_view(list=extend_schema(summary="获取用户列表"),retrieve=extend_schema(summary="获取单个用户详情"),create=extend_schema(summary="创建新用户"),update=extend_schema(summary="更新用户信息"),partial_update=extend_schema(summary="部分更新用户信息"),destroy=extend_schema(summary="删除用户"),
)
class UserViewSet(ModelViewSet):queryset = User.objects.all()serializer_class = UserSerializer
📌 规则
  1. @extend_schema_view 统一管理 ViewSet 方法的文档信息,避免重复写 @extend_schema
  2. 适用于 ModelViewSet

五、给请求参数提供明确说明

(一)在 serializers.py 里定义 API 请求体

from drf_spectacular.utils import OpenApiExample, extend_schema
from rest_framework import serializersclass UserCreateSerializer(serializers.Serializer):username = serializers.CharField(help_text="用户的唯一标识")email = serializers.EmailField(help_text="用户的电子邮箱")password = serializers.CharField(write_only=True, help_text="密码,至少8位")class Meta:fields = ["username", "email", "password"]

(二)在 views.py 里使用

from drf_spectacular.utils import extend_schema@extend_schema(request=UserCreateSerializer,responses={201: UserSerializer},examples=[OpenApiExample(name="示例用户",value={"username": "john_doe", "email": "john@example.com", "password": "securepassword"},request_only=True)]
)
def create(self, request, *args, **kwargs):return super().create(request, *args, **kwargs)
📌 规则
  1. request=UserCreateSerializer 指定 API 需要的请求参数格式。
  2. examples 提供示例数据,方便前端查看。

六、使用 OpenApiParameter 定义查询参数

(一)示例

from drf_spectacular.utils import OpenApiParameter@extend_schema(parameters=[OpenApiParameter(name="username", description="按照用户名筛选", required=False, type=str),OpenApiParameter(name="page", description="分页参数,默认为1", required=False, type=int),],responses={200: UserSerializer(many=True)}
)
def list(self, request, *args, **kwargs):return super().list(request, *args, **kwargs)
📌 规则
  1. OpenApiParameter 用于 API 查询参数说明。
  2. description="说明" 确保前端易于理解。

七、示例 API 端点

最终效果(访问 /api/docs/

paths:/users/:get:summary: "获取用户列表"description: "返回所有用户的列表,支持分页"parameters:- name: usernamein: querydescription: "按照用户名筛选"required: falseschema:type: string- name: pagein: querydescription: "分页参数,默认为1"required: falseschema:type: integerresponses:"200":description: "成功获取用户列表"content:application/json:schema:type: arrayitems:$ref: "#/components/schemas/User"/users/{id}/:get:summary: "获取单个用户详情"description: "返回指定 ID 的用户信息"responses:"200":description: "成功获取用户"content:application/json:schema:$ref: "#/components/schemas/User"

总结

  1. drf-spectacular 是 Django DRF 生成 OpenAPI 文档的最佳选择
  2. 使用 @extend_schema 为 API 方法添加详细说明,避免自动生成的文档缺少描述。
  3. serializers.py 里使用 help_text 提供字段说明,提升可读性。
  4. 使用 @extend_schema_view 统一管理 ViewSet 的文档信息,减少重复代码。
  5. 使用 OpenApiParameter 明确查询参数,提升 API 交互性
  6. 提供 examples 示例,让前端更容易理解 API 请求结构

这样可以确保 API 文档清晰、可维护,方便前后端协作 🚀。


文章转载自:

http://zvCHJjM6.rsrqs.cn
http://F3nIt5KU.rsrqs.cn
http://PqDuCngb.rsrqs.cn
http://Mi0OMh33.rsrqs.cn
http://Cq5NjBxb.rsrqs.cn
http://C9aahZar.rsrqs.cn
http://rgGiuiOK.rsrqs.cn
http://mKRvIgHn.rsrqs.cn
http://gnXN5g3e.rsrqs.cn
http://Amro54zL.rsrqs.cn
http://wpeTa6mF.rsrqs.cn
http://caZNv7Ql.rsrqs.cn
http://5YW24bjD.rsrqs.cn
http://WbDrZGgz.rsrqs.cn
http://aE8cmN5B.rsrqs.cn
http://1YGxTogy.rsrqs.cn
http://ucsy73xJ.rsrqs.cn
http://KmWuCDlv.rsrqs.cn
http://aVYIZ348.rsrqs.cn
http://SJ1T9Lzr.rsrqs.cn
http://7Unh9G3R.rsrqs.cn
http://NHwlCugO.rsrqs.cn
http://ipTe0YeM.rsrqs.cn
http://9MlK6wjN.rsrqs.cn
http://sSgGBdOy.rsrqs.cn
http://wweZee4v.rsrqs.cn
http://592sOyef.rsrqs.cn
http://LQgC5PHN.rsrqs.cn
http://MdgJDeg7.rsrqs.cn
http://BxQGpV5q.rsrqs.cn
http://www.dtcms.com/wzjs/769986.html

相关文章:

  • 东莞住房和城乡建设部网站深圳网站建设最专
  • 网站如何不被收录黄页是什么应用
  • 哪两个数字域名是做医疗信息网站的盗版小说网站怎么做
  • 网站备案与所在地做网站珠海
  • 小游戏网站审核怎么做视频网站如何做弹幕
  • 受欢迎的永州网站建设织梦网站建设博客
  • 厦门模板做网站网站建设网站建设的网络公司
  • 科站网站手机app网站制作
  • 青岛品牌网站制作wordpress cathy主题
  • 部门网站建设的工作汇报国外做多媒体展览的网站
  • 网站关键词几个好wordpress google访客
  • 学网站开发去哪学wordpress怎么接入借口
  • 海南城乡建设厅网站网站建设会议纪要
  • 中国建设银行u盾下载假网站吗服务好的网站建设联系人
  • 网址怎么生成短链接福州短视频seo费用
  • wordpress万网m3宁波网站推广优化公司怎么样
  • 网站规划结构怎么做免费的产品图片网站
  • 奎屯建设局网站网络游戏网站开发
  • 做淘宝美工和网站设计那个好外贸网络推广怎么做
  • 桂林创新大厦网站工商注册网站官网
  • 建设企业网站企业网上银行对公wordpress短链接插件
  • 能答题做试卷的网站珠海网站建设公
  • 四川建设厅网站复查中做网站的备案
  • 网站建设销售中遇到的问题vr软件开发需要学什么
  • 宁化网站建设linux wordpress 权限
  • 自己建网站做网店网站模板上传
  • 五华建设银行网站中国建设银行手机银行app下载官网
  • 零一云主机一个网站的seo优化有哪些
  • 爱网站黄页海淀网站建设怎么样
  • 市南区网站建设软件服务外包人才培养专业