2012-08-14 19 views
26

No puedo averiguar cómo forzar el tipo MIME application/json para verlo en el Frasco. Aquí está una vista sencilla que he tirado juntos para fines de demostración:Forzar aplicación/json tipo MIME en una vista (Frasco)

@app.route("/") 
def testView(): 
    ret = '{"data": "JSON string example"}' 
    return ret 

La cadena JSON (que tuvo lugar en la variable ret) se obtiene de otra parte (utilizando la salida estándar de otro programa usando subprocess) por lo que no se puede utilizar jsonify provisto con Flask.

He echado un vistazo a la pregunta "Returning Json" Documentation y this Stackoverflow pero hasta ahora no he tenido suerte. He estado buscando por un tiempo ahora & continuaré buscando pero pensé que podría preguntar aquí por si acaso alguien se ha encontrado con esto.

Gracias.


Véase el answer below

La solución:

@app.route("/") 
def testView(): 
    ret = '{"data": "JSON string example"}' 

    resp = Response(response=ret, 
        status=200, 
        mimetype="application/json") 

    return resp 

encontré este sitio web útil: Implementing a RESTful Web API with Python & Flask

Respuesta

13

parece que se puede utilizar el objeto de respuesta directa.

favor ver uno de los comentarios - Forcing application/json MIME type in a view (Flask)

+1

+1 - Gracias. Estoy jugando con eso ahora. –

+12

['make_response'] (http://flask.pocoo.org/docs/api/#flask.Flask.make_response) es probablemente una mejor opción en este caso. A continuación, establezca la propiedad 'mimetype'. 'r = make_response (datos); r.mimetype = 'application/json'; return r' – soulseekah

+1

¡Lo anterior debe convertirse en la respuesta correcta! –

22

Si se utiliza

from flask import jsonify 

y luego en el código

return jsonify(somedict) 

continuación jsonify() ajusta automáticamente el tipo MIME a 'application/json'

+1

¿Qué haces para las matrices? –

+0

La documentación recomendaba que uno creara métodos de serialización en los tipos de datos de uno, pero yo uso diccionarios simples (creo que se refiere a eso por arreglos). Jsonify() los convierte muy bien en diccionarios JSON. @ahmetalpbalkan –

+0

No, me refiero a lo que haces para enviar respuestas JSON array? (Digamos que tengo una matriz de Python, la presentaré como una matriz JSON que comienza con '[' y termina con ']'. ¿Qué haces entonces? –