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

网站建设公司简介网络服务提供商是指

网站建设公司简介,网络服务提供商是指,品牌网站建设需要哪些规划,绿色建筑信息平台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://www.dtcms.com/wzjs/398758.html

相关文章:

  • 瀑布流网站后台2021时事政治热点50条
  • 电子商务平台网站建造app定制开发
  • 中国化工建设公司官网seo怎么优化步骤
  • 网站备案查询流程百度推广手机登录
  • 网站开发搭建市场调研报告包括哪些内容
  • 景德镇网站建设公司北京正规seo搜索引擎优化价格
  • 常州网站建设运营日喀则网站seo
  • 太平洋手机网官网贵州快速整站优化
  • 网站建设设计基础沧州百度推广公司
  • 企业站系统百度官网首页下载
  • 江西网站优化seo整站优化系统
  • 个人工作室如何做网站开发一个网站
  • 企业营销网站建设百度整站优化
  • 深圳专业网站建设公司多少钱百度seo工作室
  • 合作在惠州做网站百度服务中心官网
  • 荆州网站建设推荐广州百度推广客服电话多少
  • php英文商城网站建设得物app的网络营销分析论文
  • 济南制作网站公司吗免费网站模板网
  • 蚌埠做企业网站惠州网站营销推广
  • 平阳可靠的网站建设企业如何进行网络推广
  • 大连做网站大公司一个关键词要刷多久
  • 大众服务器网站优化营商环境条例心得体会
  • 网络 网站建设营业推广
  • 做旅游攻略比较好的网站做推广网络
  • 网站设计的公司选哪家百度查找相似图片
  • 长春火车站到吉大一院宁波seo怎么推广
  • dede网站建设关键词排名快速提升
  • 网站建设合同doc北京网站制作建设公司
  • 上海手机网站建设电话爱站网使用体验
  • 网站的轮播图怎么做最好用的免费建站