53

application/jsonFlask でビューの MIME タイプを強制する方法がわかりません。以下は、デモンストレーション用にまとめた簡単なビューです。

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

JSON 文字列 ( variable に保持されてretいる) は別の場所から ( を使用して別のプログラムから stdout を使用して) 収集されるため、Flask で提供されているsubprocessものを使用することはできません。jsonify

「Returning Json」のドキュメントこのStackoverflow の質問を見てきましたが、これまでのところ運がありません。私はしばらくの間見回しており、検索を続けますが、誰かがこれに出くわした場合に備えて、ここで質問すると思いました.

ありがとう。


以下の回答を参照してください

ソリューション:

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

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

    return resp

このウェブサイトは便利だと思いました: Python & Flask を使用した RESTful Web API の実装

4

2 に答える 2

48

使用する場合:

from flask import jsonify

そして、あなたのコードで:

return jsonify(somedict)

次に、jsonify() は自動的に MIME タイプを「application/json」に設定します

編集:

これは以前はリスクと見なされていましたが、現在はそうではなく、Flask も推奨事項を更新しています。 jsonify() は配列のシリアル化をサポートするようになりました。」 http://flask.pocoo.org/docs/1.0/security/#json-security

于 2012-09-05T11:11:09.910 に答える
31

soulseekahが気付いたように、この場合はおそらくmake_responseの方が適しています。次に、mimetype プロパティを設定します。

r = make_response( data )
r.mimetype = 'application/json'
return r
于 2012-08-14T04:06:24.497 に答える