代码之家  ›  专栏  ›  技术社区  ›  0leg

Django REST在浏览器的“允许”下显示不允许的方法

  •  1
  • 0leg  · 技术社区  · 7 年前

    目标

    是禁用 OPTIONS 方法全局。

    背景

    根据官方的Django REST文档( https://www.django-rest-framework.org/api-guide/metadata/ ),正确的方法是 DEFAULT_METADATA_CLASS None .

    这就解决了问题。尝试发送OPTIONS curl请求后,服务器用 405 .

    问题

    但是,API浏览器仍然会在 允许 实际上是 不允许 :

    enter image description here

    问题

    如何在下面隐藏不支持的方法 允许 在Django API浏览器中?

    1 回复  |  直到 7 年前
        1
  •  1
  •   0leg    7 年前

    在检查 Disable a method in a ViewSet, django-rest-framework ,结果发现至少有3种解决此问题的好方法:

    1. 使用特定的视图集而不仅仅是继承 ModelViewSet
    2. 覆盖允许的方法()
    3. 定义http_method_names()

    决定:

    1. DEFAULT_METADATA_CLASS None (以确保未定义的方法不会公开)。
    2. 定义 http_method_names 对于每个视图集(在浏览器API中隐藏它们)。