如何在Django REST框架中自动创建API文档
编写文档对于开发者来说是非常艰巨的,说实话,没有人喜欢写长篇大论,我个人也不喜欢,但我们都知道,文档与编写正常运行的代码同样重要。所以,有一个非常简单的方法可以自动生成文档,等等,不仅是文档,我还会告诉你如何创建一个在线游戏场来测试API。
我不知道你怎么想的,但对我来说,Django是网络开发的首选框架,所以我将向你展示如何在Django中做到这一点。所以,在我们开始之前,你需要安装好Django和Django REST框架。我假设你已经有了。接下来,你需要安装drf-yasg 。要做到这一点,只需在终端键入以下内容。
pip install drf-yasg
现在,让我们开始讲讲步骤。
首先,创建一个新的Django项目。我假设你已经知道怎么做了。
接下来,进入settings.py,将drf_yasg添加到INSTALLED_APPS中。
INSTALLED_APPS = [
...
'drf_yasg',
...
]
然后,进入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'),
...
]
现在,如果你简单地运行服务器并转到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)
在这之后,将这个APIView添加到urls.py的/email端点上。这就是了。现在,如果你简单地在你的localhost上运行8000端口的服务器,并转到localhost:8000/docs,你应该看到文档和游乐场可以在localhost:8000/playground查看。它应该看起来像这些。
Docs
playground