J'utilise django-rest-framework . Il fournit une impressionnante API d'auto-documentation navigable de style administrateur Django. Mais n'importe qui peut visiter ces pages et utiliser l'interface pour ajouter des données (POST). Comment puis-je le désactiver?
django
django-rest-framework
iForêts
la source
la source
Réponses:
Il vous suffit de supprimer le moteur de rendu API navigable de votre liste de moteurs de rendu pris en charge pour la vue.
Généralement:
Base par vue:
À part :
Voir également la réponse ci-dessous pour plus de détails sur la restriction du moteur de rendu d'API navigable au développement.
la source
it's a big aid to any developers working on the API
. Ne devraient-ils pas avoir des fichiers de paramètres pour le développement et la production? En développement, activez l'API navigable.Bien que la réponse acceptée à cette question réponde à la question telle qu'elle a été formulée, j'estime qu'elle ne résout pas le problème en question.
Pour être complet dans cette réponse, la désactivation de l'API HTML navigable se fait en la supprimant des classes de rendu comme suit:
Cependant, le problème réel auquel la question fait allusion est que les gens peuvent publier sur l'API sans authentification. Bien que la suppression du formulaire le rend moins évident, cette réponse ne protège pas les points de terminaison de l'API.
Au minimum, quelqu'un trouve cette question et cherche à protéger l'API contre les soumissions POST non authentifiées ou non autorisées; cherchent à modifier les autorisations de l' API
Ce qui suit définira tous les points de terminaison pour qu'ils soient en lecture seule à moins que l'utilisateur ne soit authentifié.
Si vous souhaitez masquer complètement l'API à moins que l'utilisateur ne soit connecté, vous pouvez également utiliser
IsAuthenticated
.FYI: Cela supprimera également le formulaire de l'API navigable HTML car il répond aux autorisations. Lorsqu'un utilisateur authentifié se connecte, le formulaire est à nouveau disponible.
Tour bonus :
Activez uniquement l'API HTML navigable dans dev:
la source
REST_FRAMEWORK['DEFAULT_RENDERER_CLASSES'].append('rest_framework.renderers.BrowsableAPIRenderer')
Ajoutez simplement ceci à votre Settings.py devrait désactiver l'API Browsable!
la source