欢迎访问宙启技术站
智能推送

如何使用DRF_Yasg.openapiInfo()生成API文档

发布时间:2023-12-14 08:26:15

使用DRF_Yasg生成API文档主要分为以下几个步骤:

1. 安装DRF_Yasg库:

pip install drf-yasg

2. 在Django settings文件中配置DRF_Yasg:

INSTALLED_APPS = [
    ...
    'drf_yasg',
]

SWAGGER_SETTINGS = {
    'DEFAULT_INFO': 'your_project.urls.openapi_info', # 设置OpenAPI定义的路径
    ...
}

3. 创建一个urls.py文件以定义API路由,并创建一个openapi_info.py文件存放OpenAPI定义:

# urls.py
from django.urls import path
from drf_yasg.views import get_schema_view
from drf_yasg import openapi

from . import openapi_info

schema_view = get_schema_view(
    openapi_info.openapi_info, # 指定OpenAPI定义
    ...
)

urlpatterns = [
    ...
    path('api/docs/', schema_view.with_ui('swagger'), name='api_docs'),
]

# openapi_info.py
from drf_yasg import openapi

api_info = openapi.Info(
    title="API文档",
    default_version="v1",
    description="这是一个示例API文档",
    ...
)

openapi_info = openapi.openapi_info(
    info=api_info,
    ...
)

4. 在API视图中使用@swagger_auto_schema装饰器定义API接口参数和返回结果的描述信息,并使用@decorators.api_view装饰器来指定HTTP方法:

from drf_yasg import openapi
from drf_yasg.utils import swagger_auto_schema
from rest_framework.decorators import api_view
from rest_framework.response import Response

@api_view(['GET'])
@swagger_auto_schema(
    operation_summary="获取用户信息接口",
    operation_description="根据用户ID获取用户的详细信息",
    manual_parameters=[
        openapi.Parameter('id', openapi.IN_QUERY, description="用户ID", type=openapi.TYPE_INTEGER),
    ],
    responses={
        200: openapi.Response('成功', UserSerializer),
        404: "Not Found",
    }
)
def get_user(request):
    id = request.query_params.get('id')
    user = User.objects.get(id=id)
    serializer = UserSerializer(user)
    return Response(serializer.data)

5. 运行Django项目,并访问/api/docs/查看生成的API文档:

python manage.py runserver

通过以上步骤,你可以成功生成一个包含使用例子的API文档。在使用@swagger_auto_schema装饰器时,你可以通过参数自定义API接口的描述信息,包括接口的摘要、描述、参数、返回结果等。通过提供OpenAPI定义,DRF_Yasg可以自动生成API文档并提供易于理解和使用的界面。