Una forma muy común de obtener información de diferentes fuentes es mediante una API REST, que proporciona distintos API endpoints los cuales son accesibles con tal de conseguir unos datos determinados. Django REST Framework es un framework que nos permite el fácil desarrollo de una API REST en Python. Actualmente esta tecnología se usa en diversos proyectos, como por ejemplo la API del Racó o el proyecto UOC índex.
Introducción
Una forma muy común de obtener información de diferentes fuentes es mediante una API REST, que proporciona distintos API endpoints los cuales son accesibles con tal de conseguir unos datos determinados. Django REST Framework es un framework que nos permite el fácil desarrollo de una API REST en Python. Actualmente esta tecnología se usa en diversos proyectos, como por ejemplo la API del Racó o el proyecto UOC índex.
Instalación
Una buena práctica es crear un entorno virtual con todo lo necesario para poder ejecutar la API REST creada con Django:
# Create the project directory mkdir tutorial cd tutorial # Create a virtualenv to isolate our package dependencies locally virtualenv env source env/bin/activate # On Windows use `env\Scripts\activate`
Una vez instalado el entorno, aún nos hace falta instalar las librerías necesarias de Python para poder usar Django:
# Install Django and Django REST framework into the virtualenv pip install django pip install djangorestframework # Set up a new project with a single application django-admin.py startproject tutorial . # Note the trailing '.' character cd tutorial django-admin.py startapp quickstart
Ahora ya lo tenemos todo a punto para empezar nuestro proyecto con Django.
Estructura del proyecto
Analizando lo que se ha creado dentro de la carpeta tutorial
podemos ver como es la estructura de un proyecto con Django:
env
: entorno virtual con las librerías instaladas y los ficheros necesarios para la correcta ejecución del proyecto.tutorial
: carpeta donde podemos encontrar toda la configuración del proyecto. Destacarsettings.py
yurls.py
, ficheros que respectivamente controlan la configuración del proyecto (aplicaciones instaladas, módulos que se pueden usar, tipos de bases de datos soportadas…) y las urls disponibles.quickstart
: carpeta donde podemos encontrar la configuración de la aplicación quickstart del proyecto.manage.py
: ejecutable en Python que permite la puesta en marcha de la API.
Estructura de la aplicación
Analizando lo que se ha creado dentro de la carpeta quickstart
podemos ver como es la estructura de una aplicación Django:
models.py
: fichero con la información sobre los modelos de datos que usa nuestra aplicación.views.py
: archivo que contiene todas las vistas empleadas por la aplicación.tests.py
: fichero para desarrollar posibles tests para la aplicación.migrations
: directorio encargado de detectar cambios en las bases de datos que usa la aplicación.
Es muy recomendable crear ficheros adicionales, especialmente estos dos:
urls.py
: fichero con las posibles urls o endpoints de la API.queries.py
: archivo con las distintas llamadas a las bases de datos.
Tutorial
Una vez realizada la instalación tal como se describe en el punto Instalación, crearemos un nuevo endpoint para describir con más detalle cómo funciona Django:
- Abrimos el archivo
tutorial/tutorial/settings.py
y añadimos la lista INSTALLED_APPS ‘rest_framework’ y ‘quickstart’. - Abrimos el archivo
tutorial/tutorial/urls.py
y añadimos a la lista urlpatterns la siguiente url: url(r’^quickstart/’, include(‘quickstart.urls’)). Con este paso ya hemos hecho la configuración básica de nuestra aplicación quickstart. - Ahora añadiremos nuestras primeras vistas a
tutorial/quickstart/views.py
:def index(request): return HttpResponse("Hello, world. You're at the quickstartapp index.") class Example(APIView): """ Returns data from the football player Antoine Griezmann """ def get(self, request): data = {'Player': 'Antoine griezmann','Team': 'Atlético de Madrid', 'Age': 25} return HttpResponse(json.dumps(data, indent=4, sort_keys=True), content_type="application/json")
- Vamos a
/tutorial/quickstart
y creamos el archivourls.py
:from django.conf.urls import url from . import views urlpatterns = [ url(r'^index/', views.index, ), url(r'^griezmann/', views.Example.as_view(), name="'example'), ]
- Vamos a
/tutorial
y ejecutamospython manage.py runserver
(por defecto se ejecuta en el puerto 8000) y comprobamos el funcionamiento de nuestro nuevo endpoint. Tendríamos que obtener un resultado llamando al endpoint http://localhost:8000/quickstart/griezmann/ parecido a este:
{
«Age»: 25,
«Player»: «Antoine Griezmann»,
«Team»: «Atletico de Madrid»
}
Esto es solo un pequeño ejemplo donde los datos son generados cada vez que se accede a la vista correspondiente. Creando un fichero queries.py, podríamos definir una manera más compleja de conseguir los datos, permitiendo que cada vez que se llamase a una determinada vista se fuesen a buscar los datos correspondientes a una base de datos determinada.
Para acabar
Hemos visto cómo empezar a desarrollar una API REST con Django, que nos permite un desarrollo muy simple pero a la vez muy potente y fácilmente escalable. Podéis encontrar la documentación oficial del framework en: http://www.django-rest-framework.org/