Django API REST

Enviado por Manuel Alba en Mar, 26/07/2016 - 13:49
django REST framework

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. Destacar settings.py y urls.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:

  1. Abrimos el archivo tutorial/tutorial/settings.py y añadimos la lista INSTALLED_APPS ‘rest_framework’ y ‘quickstart’.
  2. 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.
  3. 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")
    
  4. Vamos a /tutorial/quickstart y creamos el archivo urls.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'),
    ]
    
  5. Vamos a /tutorial y ejecutamos python 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/

Síguenos en

Els nostres articles del bloc d'inLab FIB

         
         

inLab FIB incorpora esCert

Icona ESCERT

inLab es miembro de