Crear una Restful Api (CRUD) empleando Django Rest Framework

- Andrés Cruz

In english
Crear una Restful Api (CRUD) empleando Django Rest Framework

Una Rest Api es un componente fundamental en cualquier aplicación hoy en día que nos ofrece un mecanismo sencillo, organizado y personalizable para compartir datos o funcionalidades mediante otras aplicaciones; inclusive nos permite agregar capas de seguridad con relativa facilidad si empleas un framework, paquete o algo por el estilo; en Django, empleando Django Rest Framework no puede ser la excepción y nos permite crear mediante este paquete para Django RestApis muy personalizadas mediante clases o métodos que podemos personalizar.

Así que, nuevamente te repito, existen muchas formas de crear recursos Rest mediante Django Rest Framework (DRF) y en esta entrada vamos a ver el enfoque más sencillo, generado y directo para aprender a dar los primeros pasos con DRF.

Componentes para crear una Api Rest en DRF

En DRF existen 3 componentes principales para crear cualquier tipo de recurso Rest:

  1. Las clases de serialización, que nos permite indicar el conjunto de datos con los cuales vamos a trabajar.
  2. Las clases o métodos con los recursos Rest, la cual emplean los serializadores para hacer el mapeo a las respuestas de los recursos Rest que creamos en este punto.
  3. El ruteo, como cualquier componente http en Django, tenemos que crear un componente de ruta.

Y todo esto nosotros lo podemos administrar mediante clases, propiedades y funciones en DRF.

Definiendo el modelo de ejemplo

Vamos a trabajar con un modelo sencillo de categorías como el siguiente:

from django.db import models class Category(models.Model):    
  title = models.CharField(max_length=255)    
  url_clean = models.CharField(max_length=255)    
def __str__(self):        
   return self.title

Creando la Restful Api

Como comentamos inicialmente, vamos a crear una Api Rest de tipo CRUD, o Api Restful, por lo tanto vamos a emplear el esquema correspondiente que nos permite crear este tipo de clases empleando los 3 componentes explicados anteriormente:

Views para definir los recursos Rest

Si tu intención es crear una Api Rest de tipo CRUD, ya en DRF existe una clase que puedes heredar y de manera automática se va a crear gracias a los dos atributos que definimos, el queryset, para definir el pull de datos, y el serializer_class para definir la clase serializadora; todo esto lo haremos en un archivo llamado viewsets.py:

from rest_framework import viewsets 
from .models import Category 
from .serializers import CategorySerializer 
class CategoryViewSet(viewsets.ModelViewSet):    
  queryset = Category.objects.all()    
  serializer_class = CategorySerializer

La primera clase que tenemos que definir sería el de serializers.py que nos permite definir la serialización de nuestras clases, esto es útil para indicar con qué campos vamos a trabajar, por ejemplo, todos:

from rest_framework import serializers 
from .models import Category 
class CategorySerializer(serializers.ModelSerializer):    
  class Meta:        
    model = Category        
    fields = '__all__'

Con nuestros dos recursos creados, lo siguiente que necesitamos sería el manejo de las rutas; para eso:

from rest_framework import routers 
from .viewsets import CategoryViewset 
route = routers.SimpleRouter() 
route.register('category',CategoryViewset) 
urlpatterns = route.urls

Luego, en nuestro archivo principal para las rutas:

path('api/', include('restful.urls')),

Donde restful es el nombre de la aplicación que contiene las clases anteriores.

Andrés Cruz

Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter

Andrés Cruz en Udemy

Acepto recibir anuncios de interes sobre este Blog.