webapp2公式ドキュメントを読み解く会
2013年05月23日
Google App Engine for Python(GAE/P) を使用する際には、GAE/Pデフォルト?になっているフレームワークのwebapp2を使用しています。
とりあえず動くサイトは作れたのですが、もっと色々な機能があり、ちゃんと使えるようになれば、もっとスマートなWebサイトが作れるはず!ということで、読み解く会を始めました。
2月位から、毎週続けているコワーキングスペースのタネマキで開催しているGAE/Pの勉強会の中で1時間程度お試しでやってみました。
英語が全く読めない僕にとっては、他の人と読み解けると少しは先に進むのではないかという若干の打算もありました。
というわけで、今回は、こちらからスタートです。
The WSGI application
WSGI appでは、例外をハンドリングし、productionの時には、stack traces を出さない制御もしてくれる。などが書かれているはず。
現在、ちゃんとハンドリングをしないと、 stack tracesが出てしまっているので、読み進めば出ないように制御できるのかと期待して先を読み進めました。
- Initialization
以下の3つが設定可能、各項目の詳細はこの後の項目で説明されています。routesdebugconfig - Router
以下、4つの機能がある。
- routesの保持
- 登録された
routeに対する、現在のリクエストに一致するハンドラを返す。一致しない場合は、HTTPNotFoundを返す。 - WSGIApplicationにハンドラの実行結果を返す。
- 登録された
routeのURIを構築する。
実際に何をやっているのかははっきりと読み取れず、以下のページとソースも参考にしながら読み進めました。
・具体的な設定方法
URI routing
・Router機能で、デフォルトで起動される4機能
default_matcher(request)
default_builder(request, name, args, kwargs)
default_dispatcher(request, response)
default_adapter(handler)
・デフォルトの機能を独自の関数と差し替える方法
webapp2.Router.set_matcher()
webapp2.Router.set_dispatcher()
webapp2.Router.set_adapter()
webapp2.Router.set_builder()各機能が何をしているかは以下の解釈となりました。 - default_matcher()
リクエストに対する、routeを返す。 - default_dispatcher()
handlerを特定してadapterを呼び出し、結果を返す。 - default_adapter()
dispatcherから呼び出され、Handlerを実行する。 - default_builder()
不明!!!Routerのパラメータで渡されたnameも扱っているようでしたが、どう使っているのかも不明でした。