python/flaskで超簡単にjsonpのホスティングする(雛形)

クライアントサイドでjsonpで非同期なUIを作るとき、結局自分でjsonpホスティングしないといけない。
だけどあんまりサンプルなかったので、手間を掛けないように雛形だけメモ


flaskを使う
Welcome | Flask (A Python Microframework)

easy_install flask

最近までjuno使ってたけどあっちは更新されなくなったしバグばっかなので止めた

#!/usr/bin/env python
# -*- encoding:utf8 -*-
from flask import Flask, Response, json
application = Flask(__name__)

def jsonp(data, callback="function"):
    return Response(
        "%s(%s);" %(callback, json.dumps(data)),
        mimetype="text/javascript"
        )

@application.route("/api")
def api():
    data = {"content":"hogehoge"} # 辞書型のデータ作る
    callback = request.args.get("callback")
    if callback:
        return jsonp(data, callback)
    return jsonp(data)

@application.route("/")
def index():
    return "aplication working!"

if __name__ == "__main__":
    application.run()


はてなjavascript書けないので載せられないけど、2chのトピック一覧のjsonを返す http://182.48.60.39/scr/2ch/2chapi.py/getbbslist?callback=drtygubhnijkmui


wsgiとして走らせるのが早いけど(flaskのインスタンス名をapplicationとしているのはそのため)、セキュリティ気にしないdebug環境なら application.run(host="0.0.0.0") でやってもいい
wsgiいれるのはそんなに苦ではない。パッケージマネージャから入れてApache側で有効化する。
参考:Ubuntuにmod-wsgiいれたメモ - mizchi log