python - example - status flask




Devuelve la respuesta JSON desde la vista de Flask (6)

Antes de Flask 0.11, jsonfiy no permitía devolver una matriz directamente. En su lugar, pase la lista como un argumento de palabra clave.

@app.route('/get_records')
def get_records():
    results = [
        {
          "rec_create_date": "12 Jun 2016",
          "rec_dietary_info": "nothing",
          "rec_dob": "01 Apr 1988",
          "rec_first_name": "New",
          "rec_last_name": "Guy",
        },
        {
          "rec_create_date": "1 Apr 2016",
          "rec_dietary_info": "Nut allergy",
          "rec_dob": "01 Feb 1988",
          "rec_first_name": "Old",
          "rec_last_name": "Guy",
        },
    ]
    return jsonify(results=list)

Tengo una función que analiza un archivo CSV con Pandas y produce un dict con información resumida. Quiero devolver los resultados como una respuesta de una vista de Flask. ¿Cómo devuelvo una respuesta JSON?

@app.route("/summary")
def summary():
    d = make_summary()
    # send it back as json

Como dije anteriormente, jsonify es la mejor manera o también puede usar el paquete Flask- answers en https://github.com/Parkayun/flask-responses

@app.route("/json")
def hello():
    return json_response(your_dict, status_code=201)

Pase los datos de resumen a la función jsonify , que devuelve una respuesta JSON.

from flask import jsonify

@app.route('/summary')
def summary():
    d = make_summary()
    return jsonify(d)

A partir del Flask 0.11, puede pasar cualquier tipo serializable JSON, no solo dict, como el objeto de nivel superior.


Puede escribir un decorador para convertir el valor de retorno de una función de vista en una respuesta JSON.

def return_json(view):
    @functools.wraps(view)
    def wrapped_view(**values):
        return jsonify(view(**values))
    return wrapped_view


@app.route('/test/<arg>')
@return_json
def test(arg):
    if arg == 'list':
        return [1, 2, 3]
    elif arg == 'dict':
        return {'a': 1, 'b': 2}
    elif arg == 'bool':
        return True
    return 'non of them'

Si no desea utilizar jsonify por alguna razón, puede hacer lo que hace manualmente. Llame a flask.json.dumps para crear datos JSON, luego devuelva una respuesta con el tipo de contenido application/json .

from flask import json

@app.route('/summary')
def summary():
    data = make_summary()
    response = app.response_class(
        response=json.dumps(data),
        mimetype='application/json'
    )
    return response

jsonify serializa los datos que le pasas a JSON. Si desea serializar los datos usted mismo, haga lo que jsonify construyendo una respuesta con status=200 y mimetype='application/json' .

from flask import json

@app.route('/summary')
def summary():
    data = make_summary()
    response = app.response_class(
        response=json.dumps(data),
        status=200,
        mimetype='application/json'
    )
    return response




flask