Explicación detallada del diseño de la API RESTful de Django en el combate web de Python

          


 

Palabras clave: Python, desarrollo web, Django, API RESTful

1 Algunas cosas sobre la API

1.1 ¿Qué son las API?

API es la abreviatura de Interfaz de programación de aplicaciones (Application Programming Interface). Es una especificación que define cómo los diferentes componentes de software interactúan entre sí. La API permite la comunicación y el intercambio de datos entre diferentes aplicaciones, lo que permite a los desarrolladores utilizar funciones y datos proporcionados por otras aplicaciones sin conocer los detalles de su implementación interna.

En el desarrollo web, las API suelen ser un medio para crear y acceder a servicios web. A través de la API, los desarrolladores pueden enviar y recibir datos a través de solicitudes HTTP, realizando así la transmisión de datos y la interacción entre diferentes aplicaciones.

1.2 Tipos de API para desarrollo web

En el desarrollo web, hay varios tipos comunes de API:

1.2.1 API de servicios web:

Esta API utiliza tecnologías web estándar como HTTP y XML para comunicarse. Dos de los tipos comunes de API de servicios web son SOAP y REST.

  • SOAP (Protocolo simple de acceso a objetos):
    Utiliza el formato XML para el intercambio y transferencia de datos a través de HTTP u otros protocolos. SOAP proporciona un mecanismo de comunicación basado en XML para describir las API mediante la definición de estructuras de mensajes y operaciones de servicio. La API SOAP generalmente usa WSDL (lenguaje de descripción de servicios web) para definir la estructura y el funcionamiento de la API.

  • REST (Representational State Transfer):
    es un estilo arquitectónico ligero basado en la web. La API REST utiliza diferentes métodos del protocolo HTTP, como GET, POST, PUT, DELETE para realizar operaciones en los datos. Por lo general, utiliza el formato JSON o XML para el intercambio de datos. REST API es, con mucho, el tipo de API de servicio web más utilizado.

1.2.2 API de terceros:

Estas API son proporcionadas por terceros para permitir que los desarrolladores accedan a sus servicios o datos. Por ejemplo, las plataformas de redes sociales como Twitter y Facebook proporcionan API que permiten a los desarrolladores utilizar funciones y datos en sus plataformas. Las API de terceros suelen ser RESTful y requieren que los desarrolladores se autentiquen para obtener acceso.

1.2.3 API personalizada:

En el desarrollo web, también puede crear sus propias API personalizadas para atender sus aplicaciones. Estas API pueden diseñarse e implementarse de acuerdo con las necesidades de la aplicación y comunicarse mediante tecnologías web estándar.

2 Introducción a las API RESTful

Antes de aprender más sobre cómo Django diseña la API RESTful, primero comprendamos los conceptos y principios básicos de la API RESTful.

2.1 ¿Qué son las API RESTful?

RESTful API (Representational State Transfer) es un estilo de diseño para crear servicios de red en sistemas distribuidos. Se basa en un conjunto de principios y restricciones concisos, que permiten que diferentes sistemas se comuniquen e interactúen a través del protocolo HTTP.

2.2 Principios de la API RESTful

Los principios de diseño de la API RESTful son los siguientes:

  1. Recursos : abstraiga las entidades (recursos) en el sistema en un modelo de recursos unificado e identifíquelos de manera única a través de URI (Uniform Resource Identifier).

  2. Verbos : use métodos HTTP (GET, POST, PUT, DELETE, etc.) para expresar diferentes operaciones en los recursos.

  3. Transferencia de estado : Las operaciones sobre recursos se realizan a través de transferencias de estado solicitadas (como creación, actualización, eliminación, etc.).

  4. Sin estado : cada solicitud es independiente y el servidor no guarda la información de estado del cliente.

3 Práctica de diseño de API RESTful de Django

Bueno, ahora que tenemos una comprensión preliminar de Django y RESTful API, profundicemos en la práctica de diseño de RESTful API en el marco de Django. Lo guiaré paso a paso para implementar un proyecto de muestra con funciones prácticas, para que pueda comprender y dominar mejor las habilidades de diseño de API de Django.

3.1 Introducción del proyecto

Este proyecto es una sencilla aplicación de gestión de listas de tareas pendientes. Los usuarios pueden crear, ver, actualizar y eliminar tareas pendientes. Este proyecto nos ayudará a comprender cómo diseñar aplicaciones Django que se adhieran a los principios de la API RESTful.

3.2 Crear un proyecto Django

Primero crea un proyecto Django. Abra su terminal o símbolo del sistema y cree un nuevo proyecto Django con el siguiente comando:

django-admin startproject todoapp

Ejecutarlo creará un  todoapp nuevo directorio llamado y generará la estructura inicial del proyecto Django en él.

3.3 Creación de una aplicación

A continuación, cree una aplicación Django. Cambie al directorio en una terminal  todoapp y ejecute el siguiente comando:

python manage.py startapp todos

3.4 Definir el modelo de datos

Antes de comenzar a diseñar la vista de la API, debemos definir el modelo de datos para el trabajo pendiente. Abra  todos/models.py el archivo y agregue el siguiente código en él:

from django.db import models

class Todo(models.Model):
    title = models.CharField(max_length=200)
    description = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)
    completed = models.BooleanField(default=False)

    def __str__(self):
        return self.title

Aquí definimos un  modelo de Todo datos llamado , que contiene  los campos title,  y   .  El método se utiliza para devolver una representación de cadena del objeto modelo.descriptioncreated_atcompleted__str__

3.5 Crear una vista de API

Ahora, podemos comenzar a crear vistas de API. En  todos/views.py el archivo, agregue el siguiente código:

from rest_framework import viewsets
from .models import Todo
from .serializers import TodoSerializer

class TodoViewSet(viewsets.ModelViewSet):
    queryset = Todo.objects.all()
    serializer_class = TodoSerializer

Aquí usamos las clases proporcionadas por Django REST Framework  viewsets.ModelViewSet para definir un conjunto de vistas. Especificamos las clases de conjunto de consultas y serializador, y Django REST Framework generará automáticamente operaciones CRUD comunes (crear, leer, actualizar, eliminar).

3.6 Configurar el enrutamiento de URL

Para que Django sepa cómo asignar URL a nuestras vistas de API, debemos configurar el enrutamiento de URL. Abra  todoapp/urls.py el archivo y agregue el siguiente código:

from django.urls import include, path
from rest_framework import routers
from todos.views import TodoViewSet

router = routers.DefaultRouter()
router.register(r'todos', TodoViewSet)

urlpatterns = [
    path('', include(router.urls)),
]

Aquí usamos las clases proporcionadas por Django REST Framework  DefaultRouter para generar automáticamente rutas de URL y  TodoViewSet registrar vistas  /todos en las rutas.

Equivale a configurar manualmente las siguientes rutas:

GET /todos/: Obtener una lista de todas las tareas
POST /todos/: Crear una nueva tarea pendiente
GET /todos/{pk}/: Obtener detalles de una tarea específica
PUT /todos/{pk}/: Actualizar detalles de una tarea específica
PATCH /todos/{pk}/: actualiza parcialmente los detalles de una tarea específica
DELETE /todos/{pk}/: elimina una tarea específica

3.7 Ejecutar el servidor de desarrollo

La configuración de la vista de API y el enrutamiento de URL ahora está completa. Es hora de iniciar el servidor de desarrollo Django y probar la API. Ejecute el siguiente comando en una terminal:

python manage.py runserver

Una vez que se inicia el servidor, puede visitarlo en su navegador  http://localhost:8000/todos para ver la ruta raíz de la API. También puede usar herramientas como Postman para probar la API.

3.8 Resumen del código de muestra

A través de los pasos anteriores, hemos creado con éxito una sencilla API de gestión de tareas pendientes. Definimos el modelo de datos, creamos la vista de API y la asignamos a la ruta adecuada a través del enrutamiento de URL. En el futuro, puede ampliar y personalizar esta API según sus propias necesidades.

3.9 Agregar un serializador

El proyecto utiliza un serializador para convertir los datos del modelo en formato JSON. Ahora cree un serializador para definir cómo serializar y deserializar el modelo de tareas pendientes.

En  todos/serializers.py el archivo, agregue el siguiente código:

from rest_framework import serializers
from .models import Todo

class TodoSerializer(serializers.ModelSerializer):
    class Meta:
        model = Todo
        fields = '__all__'

Aquí importamos  serializers el módulo y creamos una  TodoSerializer clase de serializador llamada , especificando la clase de modelo y la colección de campos para serializar. '__all__' Todos los campos se pueden serializar utilizando  la representación.

3.10 Ejecutar migraciones de bases de datos

Antes de usar el nuevo modelo de datos y serializador, debe ejecutar migraciones de bases de datos para crear las tablas de datos correspondientes. Ejecute el siguiente comando en una terminal:

python manage.py makemigrations
python manage.py migrate

3.11 Pruebas de API

Ahora hemos completado el diseño y la configuración de la API. Probemos que nuestra API está funcionando.

La API se puede probar mediante el envío de solicitudes HTTP utilizando un navegador o una herramienta de prueba de API. Aquí hay algunas solicitudes de muestra:

  • Obtener todos todos : envíe una solicitud GET a  http://localhost:8000/todos/.

  • Cree una nueva tarea : envíe una solicitud POST  http://localhost:8000/todos/e incluya los datos de la tarea en el cuerpo de la solicitud.

  • Obtener una sola tarea pendiente : envíe una solicitud GET a  http://localhost:8000/todos/{id}/, donde  {id} está el ID de la tarea pendiente.

  • Actualizar tareas pendientes : envíe una solicitud PUT o PATCH  http://localhost:8000/todos/{id}/e incluya datos actualizados de tareas pendientes en el cuerpo de la solicitud.

  • Eliminar tarea pendiente : envíe la solicitud DELETE a  http://localhost:8000/todos/{id}/, donde  {id} se encuentra el ID de la tarea pendiente.

Las pruebas de solicitud se pueden realizar de acuerdo con sus necesidades y los requisitos de la herramienta.

3.12 Autenticación y control de permisos

En las aplicaciones prácticas, suele ser necesario implementar la autenticación y el control de permisos en la API para garantizar que solo los usuarios autorizados puedan acceder y modificar los datos.

Django REST Framework proporciona varias opciones de autenticación y control de permisos. Por ejemplo, puede usar la autenticación de token, la autenticación JWT (JSON Web Token) o la autenticación basada en OAuth para proteger su API.

También puede usar decoradores (un concepto similar a las anotaciones), clases de permisos y atributos de conjuntos de vistas para definir varias reglas de control de acceso, como permitir que solo los usuarios con permisos específicos realicen operaciones.

关于这个详细的内容比较多,我们后续另起一篇文章分享。

3.13 Otras funciones y extensiones

Django REST Framework proporciona muchas otras características y extensiones para ayudarlo a construir y administrar mejor las API RESTful.

Algunas características y extensiones comunes incluyen:

  • Paginación : cuando se trata de grandes cantidades de datos, puede usar la paginación para limitar el tamaño del conjunto de resultados y proporcionar enlaces a las páginas siguientes y anteriores.

  • Filtrado y búsqueda : permite a los usuarios filtrar y buscar datos según criterios específicos.

  • Clasificación : permite a los usuarios clasificar los datos por campos específicos.

  • Control de versiones : le permite administrar y controlar diferentes versiones de las interfaces API.

  • Caché : proporcione la función de almacenamiento en caché para mejorar el rendimiento de la API y la velocidad de respuesta.

Eso es todo por el intercambio de hoy. Si el contenido del artículo es útil para usted, por favor, recopile y reenvíe, gracias.

Supongo que te gusta

Origin blog.csdn.net/Rocky006/article/details/132159311
Recomendado
Clasificación