example body python json flask

body - python flask request



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

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


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)


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 argumentos de palabras clave a jsonify y se mostrarán como un objeto JSON.

@app.route(''/_get_current_user'') def get_current_user(): return jsonify( username=g.user.username, email=g.user.email, id=g.user.id )

{ "username": "admin", "email": "admin@localhost", "id": 42 }


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 desea analizar un archivo cargado por el usuario, el quickstart Flask muestra cómo obtener archivos de los usuarios y acceder a ellos. Obtenga el archivo de request.files y páselo a la función de resumen.

from flask import request, jsonify from werkzeug import secure_filename @app.route(''/summary'', methods=[''GET'', ''POST'']) def summary(): if request.method == ''POST'': csv = request.files[''data''] return jsonify( summary=make_summary(csv), csv_name=secure_filename(csv.filename) ) return render_template(''submit_data.html'')

Reemplace la clave ''data'' de request.files con el nombre del archivo ingresado en su formulario HTML.


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