Я использую django-rest-framework . Он предоставляет великолепный самодокументирующийся API-интерфейс в стиле администратора Django. Но любой может посетить эти страницы и использовать интерфейс для добавления данных (POST). Как я могу отключить это?
django
django-rest-framework
iForests
источник
источник
Ответы:
Вам просто нужно удалить просматриваемый API-рендеринг из списка поддерживаемых рендеров для просмотра.
В общем-то:
На основе просмотра:
В сторону :
См. Также ответ ниже для более подробной информации об ограничении просматриваемого API-рендеринга для разработки.
источник
it's a big aid to any developers working on the API
, Разве у них не должно быть файлов настроек для разработки и производства? В разработке включить браузерный API.Хотя принятый ответ на этот вопрос действительно отвечает на вопрос в том виде, как он был сформулирован, я чувствую, что он не решает актуальную проблему под рукой.
Для полноты в этом ответе отключение просматриваемого API-интерфейса HTML выполняется путем удаления его из классов визуализации следующим образом:
Однако фактическая проблема, на которую ссылается этот вопрос, заключается в том, что люди могут отправлять сообщения в API без аутентификации. Хотя удаление формы делает ее менее очевидной, этот ответ не защищает конечные точки API.
Как минимум, кто-то находит этот вопрос и пытается защитить API от неаутентифицированных или неавторизованных отправлений POST; вы хотите изменить разрешения API
Далее будут установлены все конечные точки только для чтения, если пользователь не аутентифицирован.
Если вы хотите полностью скрыть API, если пользователь не вошел в систему, вы также можете использовать
IsAuthenticated
.К вашему сведению: это также приведет к удалению формы из API, доступного для просмотра в формате HTML, поскольку она отвечает на разрешения. Когда авторизованный пользователь входит в систему, форма снова будет доступна.
Бонусный раунд :
Включите только HTML API для просмотра в dev:
источник
REST_FRAMEWORK['DEFAULT_RENDERER_CLASSES'].append('rest_framework.renderers.BrowsableAPIRenderer')
Просто добавьте это в файл Settings.py, чтобы отключить Browsable API!
источник