当前位置: 首页 > 知识库问答 >
问题:

排除特定HTTP方法的swagger文档

梁华皓
2023-03-14

我使用drf-yasg为我的Django REST API生成swagger文档。我有几个endpoint,项目/与GET,POST和DELETE方法;和项目/

这是我在 urls.py 中的内容的一个片段:

urlpatters = [
    url(r'^items/$', views.ItemViewSet.as_view()),
    path('items/<uuid:itemID>', views.ItemViewSet.as_view()),
]

意见。py包含如下内容:

class ItemViewSet(mixins.DestroyModelMixin, GenericAPIView):
    def get(self, request):
            # ...
            return Response(HTTP_200_OK)

    def post(self, request):
            # ...
            return Response(status=status.HTTP_201_CREATED)

    def delete(self, request, itemID):
             # ...
             return Response(status=status.HTTP_204_NO_CONTENT)

    def delete(self, request):
            # ...
            return Response(status=status.HTTP_204_NO_CONTENT)

如何从项目中排除GET和POST/

我已经通读了https://github . com/ax nsan 12/drf-yasg/blob/master/docs/custom _ spec . rst并且排除了Django REST Swagger中的URL但是还没有找到工作的解决方案。

共有3个答案

袁何平
2023-03-14

如果使用视图集(而不是APIView),则可以使用@action装饰器https://drf-yasg.readthedocs.io/en/stable/custom_spec.html

在我的项目中

class MyEntityViewSet(ModelViewSet):

@swagger_auto_schema(tags=['your tag here'])
@action(methods=['get'], detail=False)
def list(self, request):
    list obtaining code here

@swagger_auto_schema(tags=['your tag here'])
@action(methods=['post'], detail=True)
def create(self, request):
    creation code here

@swagger_auto_schema(tags=['your tag here'], method='delete')
@action(methods=['delete'], detail=True)
def destroy(self, request, entity_id, **kwargs):
    deletion code here 
#same with update

然后在网址文件中:

path('my-api/', MyEntityViewSet.as_view({'get': 'list', 'post': 'create'})),
path('my-api/<int:entity_id>/', MyEntityViewSet.as_view({'put': 'update', 'delete': 'destroy'})),
岳飞航
2023-03-14

我的黑客解决方案:

class SwaggerAutoSchemaMethodExclusion(SwaggerAutoSchema):
    read_op_counter = 0
    create_op_counter = 0       

    def get_operation(self, operation_keys):
        if "create" in in operation_keys:
            SwaggerAutoSchemaMethodExclusion.create_op_counter += 1
            if SwaggerAutoSchemaMethodExclusion.create_op_counter % 2 == 0:
                return None
        elif "read" in operation_keys:
            SwaggerAutoSchemaMethodExclusion.read_op_counter += 1
            if SwaggerAutoSchemaMethodExclusion.read_op_counter % 2 == 0:
                return None

        return super().get_operation(operation_keys)


class ItemViewSet(mixins.DestroyModelMixin, GenericAPIView):
    swagger_schema = SwaggerAutoSchemaMethodExclusion
    // ...
阙弘博
2023-03-14

通过在views.py中设置<code>swagger_schema=None</code>可以从文档中排除和APIendpoint

  class MyView(generics.ListCreateAPIView):
    """MyView class doc."""
    swagger_schema = None

    def get(self, response):
        # Do stuff here

来源:https://github.com/axnsan12/drf-yasg/commit/a211184478e6f0ca348312438c9c29d7b535b0fa

 类似资料:
  • 问题内容: 我有这段代码,我想知道如何排除除特定路径中的一个以外的所有json 问题答案: 根据Webpack文档,您可以执行以下操作。

  • 本文向大家介绍python删除特定文件的方法,包括了python删除特定文件的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python删除特定文件的方法。分享给大家供大家参考。具体如下: 希望本文所述对大家的Python程序设计有所帮助。

  • 目前,如果我试图在Gradle中做类似的事情,排除将被忽略,并且下载所有六个工件。 我使用的是Gradle版本1.8。

  • 如何从以后的每次搜索中排除目录中的文件,而无需手动键入排除项。

  • 问题内容: 我找不到任何有效的示例,说明如何实现以下目标:我希望Swagger-UI中的API方法按方法(GET-POST-PUT-DELETE)或/和字母顺序排序。 到目前为止,所有方法都以随机顺序显示,甚至没有按照我的源代码给出的顺序显示。 我使用Jax-RS + Jersey 1。 对我来说,使用@ApiOperation的position属性进行排序不是一种选择,因为方法太多,而且API仍

  • 我有一个映射到视图的实体,下面是它的外观 这工作得很好,我可以使用道从视图中检索记录。然而,我在日志中注意到Hibernate实际上正在尝试创建表,但失败了,因为它已经存在。 2015-11-12 21:56:34.841错误4204---[ost-startStop-1]组织。冬眠工具hbm2ddl。SchemaExport:HHH000389:不成功:创建表user\u profile(use