print example data all python json post flask

python - example - ¿Cómo obtener POSTED JSON en el matraz?



python flask get post params (4)

Esta es la forma en que lo haría y debería ser

@app.route(''/api/add_message/<uuid>'', methods=[''GET'', ''POST'']) def add_message(uuid): content = request.get_json(silent=True) # print(content) # Do your processing return uuid

Con silent=True set, la función get_json fallará silenciosamente al intentar recuperar el cuerpo de json. De forma predeterminada, se establece en False . Configuración de force=True ignorará el request.headers.get(''Content-Type'') == ''application/json'' verifica que el matraz lo haga por ti. Por defecto, esto también se establece en False . Ver documentación del matraz .

Recomiendo encarecidamente dejar force=False y hacer que el cliente envíe el encabezado Content-Type para hacerlo más explícito.

¡Espero que esto ayude!

Estoy tratando de construir una API simple usando Flask, en la que ahora quiero leer algunos JSON POST. Hago la publicación con la extensión PostMan Chrome , y la publicación JSON I es simplemente {"text":"lalala"} . Intento leer el JSON usando el siguiente método:

@app.route(''/api/add_message/<uuid>'', methods=[''GET'', ''POST'']) def add_message(uuid): content = request.json print content return uuid

En el navegador, devuelve correctamente el uuid que puse en el GET, pero en la consola, simplemente imprime None (donde espero que imprima el {"text":"lalala"} . ¿Alguien sabe cómo puedo obtenerlo? ¿El JSON publicado desde dentro del método Flask?


Esta solución funciona:

from flask import Flask, request, jsonify app = Flask(__name__) @app.route(''/hello'', methods=[''POST'']) def hello(): return jsonify(request.json)


Para referencia, aquí hay un código completo sobre cómo enviar json desde un cliente de Python:

import requests res = requests.post(''http://localhost:5000/api/add_message/1234'', json={"mytext":"lalala"}) if res.ok: print res.json()

La entrada "json =" establecerá automáticamente el tipo de contenido, como se explica aquí: Publicar JSON utilizando Python Requests

Y el cliente anterior trabajará con este código del lado del servidor:

from flask import Flask, request, jsonify app = Flask(__name__) @app.route(''/api/add_message/<uuid>'', methods=[''GET'', ''POST'']) def add_message(uuid): content = request.json print content[''mytext''] return jsonify({"uuid":uuid}) if __name__ == ''__main__'': app.run(host= ''0.0.0.0'',debug=True)


.json establecer el tipo de contenido de application/json en application/json para que la propiedad .json funcione; de lo contrario será None . Ver la documentación de la Request matraz :

Si el mimetype es application/json , contendrá los datos JSON analizados. De lo contrario, esto será None .

Flask 0.10 agregó el método request.get_json() , y debes usar ese método en lugar de la propiedad .json . Puede indicar al método que omita el requisito de tipo de contenido estableciendo force=True .

Tenga en cuenta que si se produce una excepción en este punto (lo que posiblemente resulte en una respuesta de 400 Solicitudes erróneas), sus datos JSON no serán válidos. De alguna manera está malformado; es posible que desee comprobarlo con un validador JSON.