我使用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但是还没有找到工作的解决方案。
如果使用视图集(而不是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'})),
我的黑客解决方案:
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
// ...
通过在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