Django REST Swagger是一个用于为Django REST Framework API生成交互式文档的工具。它基于Swagger/OpenAPI规范,可以自动从你的API代码中生成文档。
首先安装必要的包:
pip install django-rest-swagger
然后在settings.py
中添加:
INSTALLED_APPS = [
...
'rest_framework',
'rest_framework_swagger',
...
]
在urls.py
中添加:
from rest_framework_swagger.views import get_swagger_view
schema_view = get_swagger_view(title='API Documentation')
urlpatterns = [
...
path('docs/', schema_view),
...
]
使用标准的Django REST Framework文档字符串格式:
class UserList(APIView):
"""
get:
返回所有用户列表
post:
创建新用户
put:
更新用户信息
"""
def get(self, request):
...
在序列化器字段中使用help_text
参数:
class UserSerializer(serializers.ModelSerializer):
username = serializers.CharField(help_text="用户的唯一标识")
email = serializers.EmailField(help_text="用户的电子邮箱地址")
class Meta:
model = User
fields = ['username', 'email']
使用@swagger_auto_schema
装饰器详细描述参数:
from drf_yasg.utils import swagger_auto_schema
class UserList(APIView):
@swagger_auto_schema(
manual_parameters=[
openapi.Parameter(
'username',
openapi.IN_QUERY,
description="按用户名筛选",
type=openapi.TYPE_STRING
),
],
responses={200: UserSerializer(many=True)}
)
def get(self, request):
...
@swagger_auto_schema(
responses={
200: openapi.Response('成功响应', UserSerializer),
400: '无效请求',
404: '用户不存在'
}
)
def get(self, request, pk):
...
@swagger_auto_schema(
request_body=UserSerializer,
responses={201: '创建成功', 400: '无效数据'}
)
def post(self, request):
...
rest_framework_swagger
是否在INSTALLED_APPS
中help_text
@swagger_auto_schema
装饰器如果样式加载不正常,可能是静态文件问题:
STATIC_URL = '/static/'
如果遇到问题,可以考虑使用drf-yasg
(Yet Another Swagger Generator),它是Django REST Swagger的现代替代品:
pip install drf-yasg
配置方式类似但功能更强大,支持OpenAPI 3.0规范。
help_text
@swagger_auto_schema
装饰复杂API没有搜到相关的沙龙