Ich benutze Django-Rest-Framework . Es bietet eine fantastische durchsuchbare selbstdokumentierende API im Django-Administratorstil. Jeder kann diese Seiten besuchen und über die Benutzeroberfläche Daten hinzufügen (POST). Wie kann ich es deaktivieren?
django
django-rest-framework
iForests
quelle
quelle
Antworten:
Sie müssen nur den durchsuchbaren API-Renderer aus Ihrer Liste der unterstützten Renderer für die Ansicht entfernen.
Allgemein:
Per-View-Basis:
Nebenbei :
Weitere Informationen zum Beschränken des durchsuchbaren API-Renderers auf die Entwicklung finden Sie in der folgenden Antwort .
quelle
it's a big aid to any developers working on the API
. Sollten sie keine Einstellungsdateien für Entwicklung und Produktion haben? Aktivieren Sie in der Entwicklung die durchsuchbare API.Die akzeptierte Antwort auf diese Frage beantwortet zwar die Frage, wie sie formuliert wurde, aber ich bin der Meinung, dass sie das eigentliche Problem nicht löst.
Der Vollständigkeit halber wird diese Antwort deaktiviert, indem die durchsuchbare HTML-API wie folgt aus den Renderer-Klassen entfernt wird:
Das eigentliche Problem, auf das die Frage anspielt, ist jedoch, dass Personen ohne Authentifizierung Beiträge an die API senden können. Während das Entfernen des Formulars weniger offensichtlich ist, schützt diese Antwort die API-Endpunkte nicht.
Zumindest findet jemand diese Frage und möchte die API vor nicht authentifizierten oder nicht autorisierten POST-Übermittlungen schützen. die wollen das ändern API-Berechtigungen
Im Folgenden werden alle Endpunkte als schreibgeschützt festgelegt, sofern der Benutzer nicht authentifiziert ist.
Wenn Sie die API vollständig ausblenden möchten, sofern der Benutzer nicht angemeldet ist, können Sie sie auch verwenden
IsAuthenticated
.Zu Ihrer Information: Dadurch wird auch das Formular aus der durchsuchbaren HTML-API entfernt, da es auf Berechtigungen reagiert. Wenn sich ein authentifizierter Benutzer anmeldet, ist das Formular wieder verfügbar.
Bonusrunde :
Aktivieren Sie die durchsuchbare HTML-API nur in dev:
quelle
REST_FRAMEWORK['DEFAULT_RENDERER_CLASSES'].append('rest_framework.renderers.BrowsableAPIRenderer')
Fügen Sie dies einfach zu Ihren Einstellungen hinzu. Py sollte die Browsable-API deaktivieren!
quelle