DRF-YASG如何展示API的示例响应?

7
2个回答

18

使用drf_yasg.openapi.Response--(drf-yasg文档)@swagger_auto_schema(...)--(drf-yasg文档)装饰器来帮助自定义规范。

from drf_yasg.utils import swagger_auto_schema
from drf_yasg import openapi
from rest_framework.response import Response
from rest_framework.views import APIView

response_schema_dict = {
    "200": openapi.Response(
        description="custom 200 description",
        examples={
            "application/json": {
                "200_key1": "200_value_1",
                "200_key2": "200_value_2",
            }
        }
    ),
    "205": openapi.Response(
        description="custom 205 description",
        examples={
            "application/json": {
                "205_key1": "205_value_1",
                "205_key2": "205_value_2",
            }
        }
    ),
}


class MyTestAPIView(APIView):

    <b>@swagger_auto_schema(responses=response_schema_dict)</b>
    def post(self, request, *args, **kwargs):
        return Response({"foo": "bar"})

模式渲染结果

模式渲染结果

更新

它一直在加载,没有显示任何内容。

如果您正在查看 Swagger 文档,则可能需要点击 "示例值" 文本。

加载中的旋转图标


那我必须为每个API编写自定义响应吗?我有22个API,所以对于它们所有的API都要这样做吗? - TNN
1
是的,除非它们中有任何一个返回相同的响应。 - JPG
这是一个“另一个问题”,请就新问题提出新的问题。顺便说一下,如果您发现此答案有帮助,请接受并点赞。 - JPG
那么在您的情况下一定存在某些配置问题。这个答案将原封不动地起作用 @Fawad - JPG
1
我期望有一个带有参考链接的新问题@DivyaKonda - JPG
显示剩余6条评论

3

针对@JPG的回复,这里有一个快速解决方法。前往设置并添加以下内容。

SWAGGER_SETTINGS = {
    "DEFAULT_MODEL_RENDERING": "example"
}

这将首先呈现示例。


你真是太厉害了!非常感谢你! - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接