从Django REST Swagger中排除Endpoint HTTP方法

时间:2018-09-03 14:35:18

标签: django swagger

是否有一种方法可以隐藏某个端点的某些方法,而不是整个端点? (例如,显示POST方法,但隐藏一个DELETE方法)

我尝试使用AutoSchema

自定义文档

例如端点

router.register(r'audittrial', AuditTrialViewSet, 'AuditTrial')

将定义以下架构

class AuditTrialCustomView(AutoSchema):

    @staticmethod
    def get_field(name, required, location, schema, description):

        return coreapi.Field(
                    name=name,
                    required=required,
                    location=location,
                    schema=schema,
                    description=description
                )

    def get_manual_fields(self, path, method):

        extra_fields = []

        if method == 'GET':
            extra_fields = [
                self.get_field("from", False, "query", coreschema.String(), "Date of the start of the Audit Trial"),
                ....
            ]
        return extra_fields

有什么方法可以实现这一目标?

1 个答案:

答案 0 :(得分:1)

DRF有以下示例-看看它是否对您有帮助。

class CustomAutoSchema(AutoSchema):
    def get_link(self, path, method, base_url):
        # override view introspection here...

@api_view(['GET'])
@schema(CustomAutoSchema())
def view(request):
    return Response({"message": "Hello for today! See you tomorrow!"})

,以便api_view装饰器可以为您提供帮助。它以list中的方法列表作为参数。