Open jesusredondo opened 3 years ago
https://www.django-rest-framework.org/#installation
Cuestiones clave: He creado el Package "rest_django para que focalicemos el directorio relacionado con el Rest Framework:
Añadir el Framework en settings.py:
Añadir las urls para Django Rest Framework en urls.py base:
Definir la API
Una es las clases serializadoras, que básicamente definen cómo se van a serializar los modelos y atributos dentro de los modelos. Por defecto estamos extendiendo de ModelSerializer que representa las claves externas como ids al recurso en lugar de Urls. ¿Es esto lo que queremos? Yo creo que sí. Si queremos que sean las urls, entonces emplear HyperlinedModelSerializer. IMPORTANTE, se puede configurar la profundidad de objetos que se consulta con el parámetro depth.
Ejemplo de clase serializadora:
Clase ViewSet siguiendo con el ejemplo anterior:
Siguiendo con el ejemplo:
Tipo_Recurso_Comunitario Recurso_Comunitario
Se realiza mediante el siguiente package: django-rest-framework-social-oauth2. OJO: Quizás deberíamos migrar a este fork que sí que tiene mantenimiento: drf-social-oauth2.
Seguir la documentación del readme para modificar el settings.py
.
Crear un nueva OAuth2 API en la consola de desarrollador de Google (TODO: Cambiar a una cuenta corporativa, no usar la mía).
Configurar una nueva aplicación en el apartado de administración, con los siguientes campos (todo extraído de la documentación del package mencionado anteriormente):
Se ha configurado una interfaz super básica para poder hacer login desde un OAuth2 de Google en la página principal de teleasistencia:
Cuando se hace login con OAuth2:
Ya se está devolviendo el token. Es la parte larga que está después de access_token.
Para probar que funciona, se ha protegido un recurso con acceso de superusurio en la api rest. en este caso han sido los "Tipo_Recursos Comunitarios":
Podemos comprobar desde Postman (o el navegador) cómo ya no son accesibles con un mero "Get":
Para que funcione, tenemos que enviar la petición con la cabecera "Authorization" con el Bearer token para google-oauth2:
Actualizado sobre el post anterior.
A partir de Noviembre 2021 ya no se utiliza Oauth2 de Google para autenticarse.
Se está empleando la librería: djangorestframework-simplejwt).
Para la configuración se emplea la documentación oficial.
La autentificación es simple y se ha quedado registrado el proceso en Postman pero es necesario revisar si funciona con privilegios de usuarios de Django.
Problema
No hay mecanismos de autentificación ni de petición de datos (no hay api rest).
Solución
Instalar Api res framework y configurarlo con Oauth para que la autentificación se haga por token.