Manejar datos de solicitud en formato JSON en Flask

Salman Mehmood 15 febrero 2024
Manejar datos de solicitud en formato JSON en Flask

Aprenderemos, con esta explicación, qué es JSON y cómo manejar los datos de solicitudes entrantes en formato JSON. También aprenderemos a usar la extensión Postman Chrome para enviar datos JSON.

Manejar datos de solicitud en formato JSON en Flask

JSON es un formato de texto compacto y legible para estructurar datos. JSON significa JavaScript Object Notation; es un formato de texto que es completamente independiente del idioma.

Comienza y termina con corchetes. El formato JSON es muy fácil de leer para los humanos y también es fácil de analizar y generar para las computadoras.

Hay una forma más de analizar los datos de la solicitud en su aplicación Flask, y ese método utilizará un objeto JSON. Para demostrar esto, usaremos Postman, una herramienta en Chrome que le permite enviar solicitudes HTTP a URL particulares.

Lo primero que debemos hacer es crear una ruta para el manejo de JSON. Llamaremos a esto /post-data, que solo aceptará la solicitud POST, pero solo depende de lo que quieras usar el método HTTP.

Ahora definiremos un método llamado POST_REQ_DATA(). Devolveremos un objeto JSON, jsonify(), y pondremos un diccionario dentro de este.

@app.route("/post-data", methods=["POST"])
def POST_REQ_DATA():
    return jsonify({"Post_Request": "Sent"})

Si vamos a Postman y cambiamos a una solicitud POST, escribimos /post-data y lo enviamos, veremos el resultado que enviamos a través de jsonify().

Flask Solicitud JSON Salida 1

Pero por ahora, no está tomando ningún tipo de solicitud de datos. Para acceder a las solicitudes JSON, volveremos a nuestra aplicación Flask y, dentro de la función, llamaremos al método request.get_json().

Este método tomará el objeto JSON entrante y lo convertirá en estructuras de datos de Python. Cuando lo pasamos a jsonify(), encontrará un objeto en un objeto JSON y lo convertirá en diccionarios de Python, y los arrays en el objeto JSON se convertirán en listas en Python.

Ahora declararemos un objeto llamado P_R usando request.get_json(), luego lo usaremos como clave para definir algunos valores y pasarlos dentro del método jsonify(). Estos valores deberían ser solo variables regulares.

def POST_REQ_DATA():
    P_R = request.get_json()
    company_name = P_R["company_name"]
    location = P_R["location"]
    userlist = P_R["userlist"]
    return jsonify(
        {
            "Post_Request": "Sent",
            "company_name": company_name,
            "location": location,
            "userlist": userlist[1],
        }
    )

Volveremos a Postman, haremos clic en la pestaña Body y cambiaremos a Raw, luego nos aseguraremos de que la aplicación JSON esté seleccionada en esta lista desplegable porque es del tipo Jason mime. Ahora podemos escribir consultas JSON aquí y presionar el botón Send después de alimentar nuestros datos JSON; la respuesta se muestra a continuación.

Flask Solicitud JSON Salida 2

El código fuente completo de nuestra aplicación Flask se muestra a continuación:

from flask import Flask, jsonify, request

app = Flask(__name__)


@app.route("/post-data", methods=["POST"])
def POST_REQ_DATA():
    P_R = request.get_json()
    company_name = P_R["company_name"]
    location = P_R["location"]
    userlist = P_R["userlist"]
    return jsonify(
        {
            "Post_Request": "Sent",
            "company_name": company_name,
            "location": location,
            "userlist": userlist[1],
        }
    )


# We feed the follwing data inside the postman
# {'company_name':'Delftstack','location':'Netherland','userlist':['Harry Parker','Goerge Wilson']}

if __name__ == "__main__":
    app.run(debug=True)
Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn