Django swagger APIView

参考

django-rest-framework
https://www.django-rest-framework.org/api-guide/schemas/

drf-yasg
https://drf-yasg.readthedocs.io/en/stable/readme.html

APIView

APIView也可以注册到swagger 但是不会显示参数 需要手动设定

class cmdView(APIView):
    schema = AutoSchema(
        manual_fields=[
            coreapi.Field(
                name='code',
                required=True,
                location='form',
                description='',
                type='string'),
        ]
    )

    @swagger_auto_schema(request_body=cmdSerializer,operation_description="description")
    def post(self, request, format=None):
        serializer = cmdSerializer(data=request.data)
        if serializer.is_valid():
            # json_data = json.loads(request.data)
            message = messageMakeSync()
            sendMessage = message.make(request.data)
            if sendMessage is not None:
                channel_layer = get_channel_layer()
                async_to_sync(
                    channel_layer.group_send)(
                    "chat_test", sendMessage)
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        else:
            error = serializer.errors
            print(error)
            return Response(serializer.errors,
                            status=status.HTTP_400_BAD_REQUEST)

具体注解看:

Custom schema generation — drf-yasg 1.20.0 documentation
https://drf-yasg.readthedocs.io/en/stable/custom_spec.html

使用版本管理

若使用了版本管理,需要将URL指定namespace,否则不显示在swagger中

setting中的设置:


REST_FRAMEWORK = {
    # 版本控制
    'DEFAULT_VERSIONING_CLASS': 'rest_framework.versioning.NamespaceVersioning',
    'DEFAULT_VERSION': 'v1'
}

开启版本管理
在这里插入图片描述
在这里插入图片描述
只显示namespace为v1的,不用版本管理则会显示全部

在这里插入图片描述
可以通过path('system/', include(("system.urls", "system"), namespace="v1")), 来引入APIView

system/urls.py:

from django.conf.urls import url
from django.urls import path
from . import views

urlpatterns = [
    path('cmd/', views.cmdView.as_view()),
]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nickdlk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值