Estoy usando django-rest-framework . Proporciona una impresionante API de autodocumentación navegable de estilo administrativo de Django. Pero cualquiera puede visitar esas páginas y usar la interfaz para agregar datos (POST). ¿Cómo puedo desactivarlo?
django
django-rest-framework
iForests
fuente
fuente
Respuestas:
Solo necesita eliminar el renderizador API navegable de su lista de renderizadores compatibles para la vista.
Generalmente:
Por vista base:
Aparte :
Consulte también la respuesta a continuación para obtener más detalles sobre cómo restringir el renderizador de API navegable al desarrollo.
fuente
it's a big aid to any developers working on the API
. ¿No deberían tener archivos de configuración para el desarrollo y la producción? En desarrollo, habilite la API navegable.Si bien la respuesta aceptada a esta pregunta responde a la pregunta tal como fue redactada, creo que no resuelve el problema real en cuestión.
Para completar esta respuesta, deshabilitar la API HTML explorable se realiza quitándola de las clases de renderizador de esta manera:
Sin embargo, el problema real al que alude la pregunta es que las personas pueden publicar en la API sin autenticación. Si bien eliminar el formulario lo hace menos obvio, esta respuesta no protege los puntos finales de la API.
Como mínimo, alguien encuentra esta pregunta y busca proteger la API de envíos POST no autenticados o no autorizados; buscan cambiar los permisos de la API
Lo siguiente establecerá que todos los puntos finales sean de solo lectura a menos que el usuario esté autenticado.
Si desea ocultar completamente la API a menos que el usuario haya iniciado sesión, también puede usarla
IsAuthenticated
.FYI: Esto también eliminará el formulario de la API de navegación HTML, ya que responde a los permisos. Cuando un usuario autenticado inicia sesión, el formulario estará disponible nuevamente.
Ronda de bonificación :
Solo habilite la API HTML explorable en dev:
fuente
REST_FRAMEWORK['DEFAULT_RENDERER_CLASSES'].append('rest_framework.renderers.BrowsableAPIRenderer')
¡Solo agregue esto a su Settings.py debería deshabilitar la API navegable!
fuente