如何在Django REST框架中自动创建API文档

如何在Django REST框架中自动创建API文档

编写文档对于开发者来说是非常艰巨的,说实话,没有人喜欢写长篇大论,我个人也不喜欢,但我们都知道,文档与编写正常运行的代码同样重要。所以,有一个非常简单的方法可以自动生成文档,等等,不仅是文档,我还会告诉你如何创建一个在线游戏场来测试API。

我不知道你怎么想的,但对我来说,Django是网络开发的首选框架,所以我将向你展示如何在Django中做到这一点。所以,在我们开始之前,你需要安装好Django和Django REST框架。我假设你已经有了。接下来,你需要安装drf-yasg 。要做到这一点,只需在终端键入以下内容。

pip install drf-yasg
Bash

现在,让我们开始讲讲步骤。

首先,创建一个新的Django项目。我假设你已经知道怎么做了。

接下来,进入settings.py,将drf_yasg添加到INSTALLED_APPS中。

INSTALLED_APPS = [
   ...
   'drf_yasg',
   ...
]
Python

然后,进入urls.py,添加drf_yasg的驱动代码。

from rest_framework import permissions
from drf_yasg.views import get_schema_view
from drf_yasg import openapi
  
...
  
schema_view = get_schema_view(
   openapi.Info(
      title="Dummy API",
      default_version='v1',
      description="Dummy description",
      terms_of_service="https://www.google.com/policies/terms/",
      contact=openapi.Contact(email="contact@dummy.local"),
      license=openapi.License(name="BSD License"),
   ),
   public=True,
   permission_classes=(permissions.AllowAny,),
)
  
urlpatterns = [
   url(r'^playground/', schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'),
   url(r'^docs/', schema_view.with_ui('redoc', cache_timeout=0), name='schema-redoc'),
   ...
]
Python

现在,如果你简单地运行服务器并转到localhost:8000/docs,你可以看到文档,如果你转到localhost:8000/playground,但等等,文档会显示什么,我们还没有创建任何路线来显示文档。所以,让我们快速创建一个新的应用程序并为其添加一个路由。

首先,创建一个名为demo的应用程序。我假设你已经知道创建一个应用程序并将其与尿液一起添加到Django设置中。

接下来,进入demo/views.py,在其中添加以下代码。

from drf_yasg.utils import swagger_auto_schema
from rest_framework import status, permissions, serializers
from rest_framework.response import Response
from rest_framework.views import APIView
  
  
class ContactForm(serializers.Serializer):
      # simple serializer for emails
    email = serializers.EmailField()
    message = serializers.CharField()
  
  
# simple endpoint to take the serializer data
class SendEmail(APIView):
      # permission class set to be unauthenticated
    permission_classes = (permissions.AllowAny,)
    # this is where the drf-yasg gets invoked
    @swagger_auto_schema(request_body=ContactForm)
    def post(self, request):
          # serializer object
        serializer = ContactForm(data=request.data)
        # checking for errors
        if serializer.is_valid():
            json = serializer.data
            return Response(
                data={"status": "OK", "message": json},
                status=status.HTTP_201_CREATED,
            )
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Python

在这之后,将这个APIView添加到urls.py的/email端点上。这就是了。现在,如果你简单地在你的localhost上运行8000端口的服务器,并转到localhost:8000/docs,你应该看到文档和游乐场可以在localhost:8000/playground查看。它应该看起来像这些。

如何在Django REST框架中自动创建API文档?

Docs

如何在Django REST框架中自动创建API文档?

playground

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册