5

我正在使用 Django 1.11 和 Django REST Framework 3.7 开发一个 REST API。我安装了Django REST Swagger 2.1 来生成文档。

我正在使用这样的基于函数的视图:

from rest_framework.decorators import api_view, permission_classes

@api_view(['POST'])
@permission_classes((permissions.AllowAny,))
def jwt_auth(request, provider, format=None):
    """
    View description here
    """
    pass

Swagger 生成的文档

如您所见,我的视图已被 Swagger 识别,并且具有正确的描述:“在此处查看描述”。

然而:

  • 您可以看到URL 参数的“描述”列是空的。provider
  • POST 参数没有记录(显然,因为 Swagger 无法知道它们)

如何为基于函数的视图的 URL 和 POST 参数以及响应编写文档?

我尝试了YAML Docstrings,但它似乎适用于旧版本(0.3.x)并且不适用于 2.x 版本。

4

4 回答 4

4

您可以使用 DjangoRestFrameWork 的 Schema。 http://www.django-rest-framework.org/api-guide/schemas/

在您的情况下,您可以尝试以下方法。


from rest_framework.decorators import api_view, permission_classes, schema
from rest_framework import permissions

@api_view(['POST'])
@permission_classes((permissions.AllowAny,))
@schema(custom_schema)
def jwt_auth(request, provider, format=None):
    """
    View description here
    """
    pass

自定义架构定义

import coreapi, coreschema
from rest_framework.schemas import AutoSchema, ManualSchema

custom_schema = AutoSchema(manual_fields=[
    coreapi.Field("username", required=True, location="form", type="string", description="username here"),
    coreapi.Field("password", required=True, location="form", type="string", description="password field")
])

应该做的伎俩。有关更多详细信息,请访问我在顶部提供的链接。基本的 POST 和 GET 参数应该以这种方式工作。

于 2018-05-31T17:03:11.563 回答
1

在this github issue之后,您所说的基于方法的视图似乎是不可能的。

但我认为这个链接可以帮助你。

于 2017-11-13T14:43:28.160 回答
0

我已经解释了这个问题的答案。请点击此 StackOverflow 链接:https ://stackoverflow.com/a/67688437/8484740

于 2021-05-25T12:59:10.140 回答
0

使用下面的代码

@swagger_auto_schema(method='post', auto_schema=None)
@api_view(['POST'])
@permission_classes((permissions.AllowAny,))
def jwt_auth(request, provider, format=None):
    """
    View description here
    """
    pass
于 2019-08-23T11:03:38.947 回答