mgood/flask-debugtoolbar · GitHub
Flask-debugtoolbarで開発を楽に! - uokadaの日記
Flask-debug-toolbarはFlaskで開発するときの拡張モジュールの話なんだけど、
REST APIでもプロファイリングした結果欲しいな〜って思って
どうやったらツールバーが出るのか仕組みを調べてみた。
結論からいくと flask_debugtoolbar/init.py の replace_insensitive関数で
ツールバーの部分を差し込んでるだけでした。
関数の中でbodyの閉じタグを探してそこにレスポンスを追加しているようです。
理屈がわかったのでWebAPIのレスポンスでも簡単にプロファイリングとることが出来そうです。
例えば、JSONを返すWebAPIにWebブラウザからリクエストした時だけプロファイリング結果を出力したい場合はこんな感じです。
after_requestのところでContent-TypeとUserエージェントを見てbodyタグで囲ってやれば
プロファイリング結果が出力されるようになります。
@app.after_request def add_dtb(response): if response.content_type == "application/json": if request.headers.get('User-Agent').find("Mozilla") == 0: body = "<body>%s</body>" % response.data return Response(body) return response
既存のコードにそこまで変更を加えずにプロファイリング出来ることがわかったので これで開発が捗るわ〜!