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

时间:2018-12-16 14:11:07

标签: django django-rest-framework

目标

是全局禁用OPTIONS方法。

背景

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

这可以解决问题。尝试发送OPTIONS卷曲请求后,服务器将以405进行响应。

问题

但是,API浏览器仍会在 Allow 下显示实际上不允许的方法:

enter image description here

问题

如何在Django API浏览器的 Allow 下隐藏不受支持的方法?

1 个答案:

答案 0 :(得分:1)

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

  1. 使用特定的ViewSet而不是仅继承ModelViewSet
  2. 覆盖_allowed_methods()
  3. 定义http_method_names()

决定:

  1. DEFAULT_METADATA_CLASS设置为None(以确保未公开未定义的方法)。
  2. 为每个ViewSet定义http_method_names(以将其隐藏在Browser API中)。