Petición HTTP POST con JSON usando Python y requests
En mi blog ya te he mostrado cómo hacer un servidor web con Python o una API con Flask, pero Python también puede ser un cliente HTTP para consumir APIs de otros servidores.
Por ello es que en este post te voy a enseñar cómo hacer una petición HTTP de tipo POST enviando y recibiendo datos codificados como JSON usando Python y el módulo requests.
Recuerda que JSON puede enviar simples cadenas, enteros, booleanos, etcétera hasta diccionarios y arreglos. Aquí no será necesario codificar los datos como JSON, pues requests ya hará el trabajo por nosotros.
Lo que sí te quiero advertir es que en ocasiones hay problemas cuando intentamos codificar un objeto de Python a JSON, así que en lugar de ello recomiendo usar diccionarios.
Vamos a necesitar el módulo requests, para ello debes contar con Python y PIP. Una vez que los tengas, ejecuta:
pip install requests
Ahora veamos un ejemplo muy simple para enviar una cadena al servidor usando JSON. El código queda así:
# https://parzibyte.me/blog
import requests
url = "la_url_del_servidor"
datos = "Hola mundo" # <- El json que enviamos
respuesta = requests.post(url, json=datos)
# Ahora decodificamos la respuesta como json
como_json = respuesta.json()
print("La respuesta del servidor es:")
print(como_json)
En la línea 2 importamos al módulo requests
, luego definimos la url del servidor en la línea 4. Más tarde definimos los datos que se van a enviar en la línea 5, recuerda que estos datos pueden ser un diccionario, una lista, una cadena, entero, lista de diccionarios, etcétera.
La verdadera petición http post con JSON usando Python se está haciendo en la línea 6 en donde pasamos los datos en el argumento json
dentro de la llamada a post
. Después, tenemos la respuesta como JSON en la línea 8.
Es importante mencionar que si el servidor no regresa JSON, al invocar al método json
de la línea 8, se generará una excepción. Si quieres leer la respuesta como cadena, mejor accede a respuesta.text
.
A continuación te mostraré un ejemplo real.
Vamos a usar la API REST falsa JSONPlaceholder. El código queda así:
# https://parzibyte.me/blog
import requests
url = "https://jsonplaceholder.typicode.com/posts"
usuario = {
"title": "Título",
"body": "El cuerpo",
}
respuesta = requests.post(url, json=usuario)
# Ahora decodificamos la respuesta como json
como_json = respuesta.json()
print("La respuesta del servidor es:")
print(como_json)
# Podemos acceder al id por ejemplo
id = como_json["id"]
print(f"El id es: {id}")
Ahora estamos enviando un objeto de JSON, que en Python es un diccionario. Lo enviamos en la línea 9 al invocar a post
.
El servidor nos va a regresar el mismo objeto que enviamos pero además un id
, así que imprimimos la respuesta (será un diccionario) y también accedemos a una propiedad del objeto en la línea 15.
Al ejecutarlo se ve así:
Te cuento que tengo más tutoriales sobre Python en mi blog.
El día de hoy vamos a ver cómo restablecer la impresora térmica GOOJPRT PT-210 a…
Hoy voy a enseñarte cómo imprimir en una impresora térmica conectada por USB a una…
En este post voy a enseñarte a programar un servidor web en Android asegurándonos de…
En este post te quiero compartir un código de C++ para listar y cancelar trabajos…
Gracias a WebAssembly podemos ejecutar código de otros lenguajes de programación desde el navegador web…
Revisando y buscando maneras de imprimir un PDF desde la línea de comandos me encontré…
Esta web usa cookies.