首页 > 解决方案 > 从 Django REST Swagger 中排除端点 HTTP 方法

问题描述

有没有办法只隐藏端点的一些方法而不是整个端点?(例如显示 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

有什么方法可以实现吗?

标签: djangoswagger

解决方案


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装饰师应该帮助你。它将列表中的方法列表作为参数。


推荐阅读