web-dev-qa-db-ja.com

ビューでのapplication / json MIMEタイプの強制(Flask)

MIMEタイプを強制する方法がわかりませんapplication/jsonはFlaskのビューです。これは、デモのためにまとめた簡単なビューです。

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

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

"Returning Json" Documentationthis 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を実装する

36
JayQuerie.com

soulseekah のように、 make_response はおそらくこの場合のより良いオプションです。次に、mimetypeプロパティを設定します。

r = make_response( data )
r.mimetype = 'application/json'
return r
17
Adam Baxter

使用する場合

from flask import jsonify

そしてあなたのコードで

return jsonify(somedict)

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

編集:

これは以前はリスクと見なされていましたが、もはやではありませんでした。Flaskも推奨を更新しました: "ECMAScript 5はこの脆弱性を閉じたため、非常に古いブラウザのみがこれらのブラウザはすべて他のより深刻な脆弱性があるため、この動作が変更され、jsonify()は配列のシリアル化をサポートするようになりました。 "http://flask.pocoo.org /docs/1.0/security/#json-security

37
Prof. Falken