Introducción

Este artículo es una guía para principiantes que quieran desarrollar proyectos con API RESTful usando Python, Django y Django Rest Framework.

  • Django es un framework web escrito en Python
  • Python es un lenguaje de programación de alto nivel interpretado para programación de propósito general
  • API o interfaz de programación de aplicaciones es un conjunto de reglas y mecanismos mediante los cuales una aplicación o componente interactúa con los demás.
  • REST es un acrónimo que significa Representational State Transfer o transferencia de estado. Le agrega una capa muy delgada de complejidad y abstracción a HTTP. Mientras que HTTP es transferencia de archivos, REST se basa en la transferencia de recursos.

API REST

REST es un conjunto de principios que definen la forma en que se deben crear, leer, actualizar y eliminar los datos. Es una arquitectura conocida como cliente-servidor, en la que el servidor y el cliente actúan de forma independiente, siempre y cuando la interfaz sea la misma al procesar una solicitud y una respuesta, que son los elementos esenciales. El servidor expone la API REST y el cliente hace uso de ella. El servidor almacena la información y la pone a disposición del usuario, mientras que el cliente toma la información y la muestra al usuario o la utiliza para realizar posteriores peticiones de más información.

REST es muy útil cuando:

  • Las interacciones son simples.
  • Los recursos de tu hardware son limitados.

En definición simple, es la representación de datos para un cliente en el formato adecuado para él.

Qué es una API RESTful

Una API RESTful es una interfaz que utiliza estos principios para comunicarse hacia y desde un servidor. Está diseñada con los conceptos de REST. El principio más importante en las APIs RESTful es el uso de los métodos HTTP:

  • GET
  • POST
  • PUT
  • DELETE

Estos métodos son empleados por los clientes para crear, manipular y eliminar datos en los servidores, respectivamente.

Por lo tanto, RESTful + API es una terminología de uso común para la implementación de dicha arquitectura y restricciones (por ejemplo, en servicios web).

Aquí hay un ejemplo de solicitud GET de la API de GitHub

$ curl https://api.github.com/users/devjaime

Verá una salida similar a esta

Arriba se muestra un conjunto de datos en formato JSON .

La notación de objetos JSON es un formato de archivo de estándar abierto que utiliza texto legible por humanos para transmitir objetos de datos que consisten en pares de valor de atributo y tipos de datos de matriz.

Otros formatos incluyen XML, INI, CSV, etc. Pero hoy en día, JSON se usa ampliamente porque su estructura es intuitiva, lo que facilita la lectura y el mapeo de objetos de dominio sin importar qué lenguaje de programación se esté utilizando.

Phyton y Django

Python , según su creador, Guido van Rossum, es:

lenguaje de programación de alto nivel, y su filosofía central de diseño tiene que ver con la legibilidad del código y una sintaxis que permite a los programadores expresar conceptos en unas pocas líneas de código.

Python utiliza la representación de palabras similares al inglés (p. ej., para métodos, reservar palabras clave y controlar el flujo) que hace que sea más fácil para cualquier principiante saltar directamente a él. También cuenta con un sistema de tipado dinámico, lo que significa que verifica la seguridad de tipo del programa en tiempo de ejecución. También realiza una gestión automática de la memoria.

Django es un Framework de alto nivel que permite a los desarrolladores entregar proyectos a tiempo con un diseño limpio y pragmático.

Sus características principales incluyen un diseño para un desarrollo rápido, un producto seguro y escalable.

Resumen rápido de Django

La forma de Django de propagar cambios al esquema de su base de datos es por medio de sus módulos de migración .

Usermodelo de muestra

Si se realizan cambios en sus modelos, ejecutemakemigrations

$ python manage.py makemigrations

Finalmente, puede sincronizar la base de datos con el conjunto de modelos y migraciones.

$ python manage.py migrate

API REST con Django Rest Framework

DRF o Django REST Framework es un conjunto de herramientas potente y flexible para crear API web. Ayuda a los desarrolladores a no reinventar la rueda implementando API REST complejas y sólidas desde cero por sí mismos. Porque cuando sus proyectos se vuelven más y más complejos, pronto se dará cuenta de la necesidad de usar DRF u otro Framework para bajar la complejidad.

1. Instalación y configuración del proyecto

Crear directorio de proyectos

$ mkdir djangoapi

Instalar virtualenv a través de pip

Un entorno virtual permite que un proyecto tenga bibliotecas adicionales o cambios en los paquetes dentro de su entorno sin alterar las bibliotecas globales o de otros entornos.

_pip__es un sistema de administración de paquetes que se utiliza para instalar y administrar paquetes de software escritos en Python._

$ pip install virtualenv

Para crear una carpeta de entorno en el directorio de su proyecto

$ cd djangoapi$ virtualenv venv

Para activar el entorno.

$ source venv/bin/activate

Para deshacer estos cambios en su ruta, simplemente ejecute deactivate. Más sobre virtualenv .

Instalar django , djangorestframework

$ pip install django$ pip install djangorestframework

Creando un proyecto Django

$ django-admin startproject blog

Ejecutando tu proyecto

$ python manage.py runserver

Las migraciones no aplicadas se refieren a los archivos de migración predeterminados que se incluyen cuando inicia un proyecto Django.

Para sincronizar estos archivos de migración, simplemente ejecutemigrate

$ python manage.py migrate

La base de datos predeterminada en nuestro proyecto está configurada actualmente en SQLite llamada db.sqlite3.

Creando la aplicación de un proyecto django

$ cd blog$ python manage.py startapp posts

La estructura del proyecto debe verse como:

2. modelo

Cada instancia de modelo es una fuente definitiva de información sobre sus datos. En general, cada modelo pertenece a una sola tabla en su base de datos.

___str____es llamado por la_ _str()__función incorporada y por la declaración de impresión para calcular la representación de cadena “informal” de un objeto._

Si intenta ejecutar makemigrations, django aún no verá esos cambios.

Para resolver esto, agregue su posts a las aplicaciones instaladas de su proyecto.

Para continuar con la migración de modelos:

3. Serialización

Los serializadores permiten traducir la estructura de datos o el estado del objeto a un formato que puede almacenarse o transmitirse y reconstruirse más adelante.

Cree archivos APIserializers.pyy views.pyy aíslelos así:

En este tutorial hemos utilizado ModelSerializer, más sobre esto .

4. Vistas

Una función de vista, o vista para abreviar, es una función de Python que toma una solicitud web y devuelve una respuesta web.

Como se vio anteriormente, ListAPIViewse usa para puntos finales de solo lectura para representar una colección de instancias de modelo.

En este fragmento de código, usamos métodosgenerics de vista de rest_framework, más sobre esto .

5. URL

Aquí es donde configuramos nuestras rutas o rutas URL a nuestras vistas designadas en las que esperamos respuestas específicas para cada una.

6. Finalización de la configuración

Asegúrese de que rest_frameworkse agregue a las aplicaciones de nuestro proyecto.

7. Administrador de Django

Dado que aún no hemos configurado nuestras POSTsolicitudes, completaremos la base de datos a través del panel de administración de Django.

Para hacer eso, cree una cuenta de superusuario admincon contraseña 1234password.

Registre el modelo en el panel de administración.

Eso es todo. Visite el panel de administración y actualice postslos registros del modelo. Más sobre esto .

8. Probando nuestra API

Estupendo. Ahora es el momento de que actualicemos nuestras vistas y terminemos las operaciones CRUD estándar.

9. Agregar más vistas

POSTes un método utilizado para crear (a veces actualizar) un recurso en la base de datos.

La mayoría de las veces, separamos Listy vemos las Clases Create cuando queremos exponer una lista de conjuntos de datos mientras evitamos fácilmente una determinada solicitud POSTo creamos un recurso en la base de datos para esa VistaList específica.

El caso de uso siempre varía para las aplicaciones, puede optar por usar ListCreateAPIView o incluso ViewSets para combinar la lógica para un conjunto de vistas relacionadas.

Opcional : dado que queremos mostrar los datos de una manera más sistemática, anulamos el metodocreatey mapeamos nuestro controlador de respuesta personalizado en línea.

Agregar más vistas con los métodos GET, PATCH, DELETEpara manejar un detalle específico de la publicación del blog.

10. Actualización de URL

Ahora puede enviar solicitudes a su API a través de Postman o Insomnia, su aplicación o realizar solicitudesGETdesde su navegador, ejemplos:

Eso es todo. ¡Ha logrado desarrollar con éxito API RESTful con DRF.