Creación de una API REST con Django
Introducción
Una API REST es un conjunto de recursos que se pueden acceder y manipular a través de una interfaz HTTP. Django REST Framework es un framework de Python que facilita la creación de APIs REST.
En este tutorial, aprenderás a crear una API REST simple con Django REST Framework.
Requisitos previos
Para seguir este tutorial, necesitarás los siguientes requisitos previos:
- Python 3.6 o superior
- Django 3.2 o superior
- Django REST Framework 3.13 o superior
Instalación de Django y Django REST Framework
Para instalar Django y Django REST Framework, ejecuta los siguientes comandos:
pip install django
pip install djangorestframework
Creación de un proyecto Django
Para crear un proyecto Django, ejecuta el siguiente comando:
django-admin startproject myproject
Este comando creará un directorio llamado myproject
con los siguientes archivos:
myproject/settings.py
: Archivo de configuración del proyectomyproject/urls.py
: Archivo de URL del proyectomyproject/wsgi.py
: Archivo WSGI del proyecto
Creación de una aplicación Django
Para crear una aplicación Django, ejecuta el siguiente comando:
python manage.py startapp myapp
Este comando creará un directorio llamado myapp
con los siguientes archivos:
myapp/admin.py
: Archivo de administración de la aplicaciónmyapp/apps.py
: Archivo de información de la aplicaciónmyapp/models.py
: Archivo de modelos de la aplicaciónmyapp/tests.py
: Archivo de pruebas de la aplicaciónmyapp/views.py
: Archivo de vistas de la aplicación
Configuración de Django REST Framework
Para configurar Django REST Framework, añade las siguientes líneas al archivo myproject/settings.py
:
INSTALLED_APPS = [
...
'rest_framework',
]
También puedes añadir la siguiente línea para habilitar la autenticación de usuario:
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.BasicAuthentication',
),
}
Creación de un modelo de datos
Para crear un modelo de datos, añade la siguiente clase al archivo myapp/models.py
:
from django.db import models
class Product(models.Model):
name = models.CharField(max_length=255)
description = models.TextField()
price = models.DecimalField(max_digits=10, decimal_places=2)
Este modelo define una entidad de producto con los siguientes campos:
name
: Nombre del productodescription
: Descripción del productoprice
: Precio del producto
Creación de un serializador
Un serializador es un objeto que convierte los objetos del modelo de datos en datos JSON. Para crear un serializador, añade la siguiente clase al archivo myapp/serializers.py
:
from rest_framework import serializers
class ProductSerializer(serializers.ModelSerializer):
class Meta:
model = Product
fields = ('name', 'description', 'price')
Este serializador serializa los campos name
, description
y price
del modelo de datos Product
.
Creación de una vista
Una vista es un objeto que maneja las solicitudes HTTP. Para crear una vista, añade la siguiente clase al archivo myapp/views.py
:
from rest_framework.generics import ListAPIView
class ProductListView(ListAPIView):
queryset = Product.objects.all()
serializer_class = ProductSerializer
Esta vista devuelve una lista de todos los productos.
Creación de una URL
Una URL es una dirección que identifica un recurso. Para crear una URL para la vista ProductListView
, añade la siguiente línea al archivo myproject/urls.py
:
urlpatterns = [
...
path('products/', ProductListView.as_view()),
]
Ejecución de la aplicación
Para ejecutar la aplicación, ejecuta el siguiente comando:
python manage.py runserver
Esto iniciará un servidor web