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:
- Las clases de serialización, que nos permite indicar el conjunto de datos con los cuales vamos a trabajar.
- 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.
- 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