我使用Django的REST的架构 。 它提供了一个真棒Django管理风格可浏览自文档API。 但是,任何人都可以访问这些页面,并使用界面上添加数据(POST)。 如何禁用呢?
Answer 1:
你只需要从您的视图支持的渲染列表中删除浏览的API渲染器。
您可以在全球做到这一点,像这样:
REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES': (
'rest_framework.renderers.JSONRenderer',
)
}
或在按次基础,如下所示:
class MyView(...):
renderer_classes = [renderers.JSONRenderer]
旁白 :在许多情况下,我认为这是一个耻辱,人们会选择在任何情况下,禁用浏览的API,因为它是一个很大的援助,以对API的使用任何开发者,它并没有给他们更多的权限,他们原本有 。 我可以看到,有可能是在某些情况下,这样的商业理由,但一般来说,我会认为这是一个巨大的资产。
Answer 2:
虽然接受了这个问题的答案不回答这个问题,因为它是措辞,我觉得它不会在手解决实际问题。
对于这个答案的完整性,禁用浏览的HTML API由从渲染器类,像这样删除它来完成:
REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES': (
'rest_framework.renderers.JSONRenderer',
)
}
但是,实际的问题,这个问题暗指是人们能够发布到API无需验证。 在去除形式使得它不太明显,这个答案不保护API端点。
至少,有人发现了这个问题,并正在寻求保护API未经身份验证的,或未经授权的POST提交的材料; 在寻找改变API权限
下面我们来设置所有端点,除非用户进行身份验证是只读的。
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticatedOrReadOnly',
)
}
如果你想完全隐藏API,除非用户登录,您还可以使用IsAuthenticated
。
FYI:这也将从HTML浏览的API删除形式,因为它响应权限。 当某个用户登录时,该表将再次可用。
奖金回合 :
只有能够在开发浏览的HTML API:
DEFAULT_RENDERER_CLASSES = (
'rest_framework.renderers.JSONRenderer',
)
if DEBUG:
DEFAULT_RENDERER_CLASSES = DEFAULT_RENDERER_CLASSES + (
'rest_framework.renderers.BrowsableAPIRenderer',
)
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework.permissions.IsAuthenticatedOrReadOnly',
),
'DEFAULT_RENDERER_CLASSES': DEFAULT_RENDERER_CLASSES
}
Answer 3:
import rest_framework
For Production Only
REST_FRAMEWORK = {
'DEFAULT_RENDERER_CLASSES': (
'rest_framework.renderers.JSONRenderer',
)
}
只需添加到您的Settings.py应禁用可浏览API!
Answer 4:
删除'rest_framework.renderers.BrowsableAPIRenderer',
从'DEFAULT_RENDERER_CLASSES'
在你的设置
文章来源: How to disable admin-style browsable interface of django-rest-framework?