Consumo y producción de APIs con arquitecturas REST/JSON
Cita con formato IEEE:
E. Bahit, "Consumo y producción de APIs con arquitecturas
REST/JSON", in Python Aplicado, 4th ed., EBRC Publisher,
2022, pp. 233-245.
Cita con formato APA 7:
Bahit, E. (2022). Consumo
y producción de APIs con arquitecturas REST/JSON. In Python
Aplicado (4th ed., pp. 233-245). EBRC Publisher.
Cita en línea:
(Bahit, 2022)
Una API (Application Programming Interface, o Interfaz de programación de aplicaciones) es un programa informático empleado para permitir la interacción entre dos programas independientes.
Se denomina interfaz ya que actúa como intermediaria para que un programa pueda acceder a otro sin hacer un uso directo de este y por consiguiente, tampoco de sus datos. En el mundo actual, las APIs son implementadas en todo tipo de sistemas informáticos. Un uso tecnológico habitual y bien conocido de este tipo de interfaces de aplicación, es el que las redes sociales ofrecen a otros programas para facilitar la función de autenticación de usuarios.
Por sus siglas en inglés, REST significa Representational State Transfer (transferencia de estado representacional). Es un estilo arquitectónico presentado en el año 200019 por el Dr. R. T. Fielding de la Universidad de California, y confundador de la Apache Software Foundation.
R.T. Fielding define a REST como un «estilo arquitectónico híbrido para sistemas hipermedia distribuidos».
Trabajar con el formato JSON desde Python
JSON es el formato de intercambio de datos utilizado por APIs con arquitecturas REST. Por sus siglas en inglés, JSON significa JavaScript Object Notation (notación de objetos JavaScript). Es un conjunto de reglas de formato de texto para el intercambio de datos estructurados, e independiente del lenguaje de programación.
Brevemente, el formato propuesto por JSON es algo similar a los
diccionarios de Python, y la biblioteca json
de Python
—entre otras cosas— se encarga de codificar diccionarios Python en
formato JSON, y decodificar datos en formato JSON como diccionarios
Python.
Un conjunto de datos en formato JSON —denominado Objeto JSON—, se describe como un diccionario formato por claves y valores:
/* Código JavaScript */ var libros = { "Python para principiantes": { "ISBN": 9781838190101, "Edición": 2, "Páginas": 178, "Autora": "Eugenia Bahit" }, "Python Aplicado": { "ISBN": 9781838190125, "Edición": 3, "Páginas": 202, "Autora": "Eugenia Bahit" } };
En el ejemplo anterior, el valor de la variable libros
es un objeto JSON.
Al recibir un objeto JSON en Python, o en cualquier otro lenguaje,
inicialmente se recibe como una cadena de texto. Debe ser convertida,
entonces, a un formato interpretable por el lenguaje. Las funciones
loads
y dumps
de la biblioteca
json
de Python, decodifican y codifican el formato JSON
respectivamente:
# Código Python from json import loads libros_json = """{ "Python para principiantes": { "ISBN": 9781838190101, "Edición": 2, "Páginas": 178, "Autora": "Eugenia Bahit" }, "Python Aplicado": { "ISBN": 9781838190125, "Edición": 3, "Páginas": 202, "Autora": "Eugenia Bahit" } }""" libros_dict = loads(libros_json)
Si se verifica la salida se comprobará que la cadena con formato JSON ha sido convertida a diccionario:
>>> type(libros_dict) <class 'dict'> >>> print(libros_dict) {'Python para principiantes': {'ISBN': 9781838190101, 'Edición': 2, 'Páginas': 178, 'Autora': 'Eugenia Bahit'}, 'Python Aplicado': {'ISBN': 9781838190125, 'Edición': 3, 'Páginas': 202, 'Autora': 'Eugenia Bahit'}} >>> libros_dict['Python Aplicado']['Autora'] 'Eugenia Bahit'
De igual forma, un diccionario Python puede convertirse a JSON:
# Código Python from json import dumps libros_dict = { 'Python para principiantes': { 'ISBN': 9781838190101, 'Edición': 2, 'Páginas': 178, 'Autora': 'Eugenia Bahit' }, 'Python Aplicado': { 'ISBN': 9781838190125, 'Edición': 3, 'Páginas': 202, 'Autora': 'Eugenia Bahit' } } libros_dict = dumps(libros_dict)
Igual que en el caso anterior, se comprueba la salida para verificar que el diccionario se alla convertido:
>>> libros_dict = dumps(libros_dict) >>> libros_dict '{"Python para principiantes": {"ISBN": 9781838190101, "Edici\\u00f3n": 2, "P\\u00e1ginas": 178, "Autora": "Eugenia Bahit"}, "Python Aplicado": {"ISBN": 9781838190125, "Edici\\u00f3n": 3, "P\\u00e1ginas": 202, "Autora": "Eugenia Bahit"}}' >>> type(libros_dict) <class 'str'>
Consumo y producción de APIs
Para consumir una API se puede optar por uno de dos mecanismos posibles:
- Conectar mediante una herramienta del sistema operativo, como cURL, a través de la biblioteca Popen de Python.
- Conectar mediante la biblioteca http de Python. Para realizar la conexión se seguirán los pasos descritos en el Capítulo 21, a partir de la página 133.
...