2011年1月8日土曜日

FlaskでJSONP

PythonのマイクロフレームワークFlaskでは
JSONを返却するためのメソッドjsonifyが定義されている。


from flask import Flask
from flask import jsonify

app=Flask(__name__)

@app.route('/test.json')
def test_json():
return jsonify(res='test')

if __name__ == '__main__':
app.run()



/test.jsonでリクエストすると
{
res:'test'
}
という結果が帰ってくる

JSONPにしたい場合はjsonifyは使えない。



@app.route('/test.jsonp')
def test_jsonp():
import json
request.args.get('callback') + '(' + json.dumps(dict(res='test')) + ')'



というように自分でリクエストパラメータからcallbackを受け取って
付与して返す必要がある。

ただしこのままでは、mimetypeの指定がないので
厳密にはmimetypeの指定を行わなくてはならない。
script/javascript

現状FlaskのJSONP用のmethod(padded_jsonify)が要望として上がっているが、
jsonifyのように*args,**kwdとすべての引数がjsonオブジェクトになるような機能のため
callbackが入る余地が無いみたいで、提案が今は棄却されている模様。

0 件のコメント:

コメントを投稿