ウェブサーバーゲートウェイインタフェース (WSGI) 標準はシンプルですが、 WSGIを使うためのコードを全て手動で記述するのは大変です。 ウェブアプリケーションサーバがあなたに代わってこれらの詳細を処理するので、あなたのアプリケーションの機能面に開発努力を集中させることができます。 Google App Engine では、Django, CherryPy, Pylons, web.py, web2pyを含む、純正Pythonで記述されたWSGI対応フレームワークをサポートしています。 フレームワークのコードをアプリケーションディレクトリにコピーすることで、任意のフレームワークをアプリケーションにバンドルできます。
App Engine にはwebapp2
と呼ばれるシンプルなウェブアプリケーションフレームワークが含まれています。
The webapp2
フレームワークは既に App Engine 環境と App Engine Python SDKにインストールされているので、使用するためにそれをアプリケーションコードにバンドルする必要はありません。
以降のチュートリアルでは webapp2
を使用します。
webapp2
アプリケーションには二つのパーツがあります:
RequestHandler
クラスWSGIApplication
インスタンスそれでは、あらためてHelloアプリケーションを見てみましょう:
import webapp2 class MainPage(webapp2.RequestHandler): def get(self): self.response.headers['Content-Type'] = 'text/plain' self.response.write('Hello, World!') app = webapp2.WSGIApplication([ ('/', MainPage), ], debug=True)
このコードでは、ルートURL(/
)に紐付けられているリクエストハンドラ MainPage
が定義されています。
webapp2
がURL /
へのHTTP GETリクエストを受信した時、MainPage クラスをインスタンス化してインスタンスの get
メソッドを呼び出します。
メソッド内では、self.request
を使ってリクエストに関する情報にアクセスできます。
一般的に、このメソッドはself.response
にプロパティを設定して応答の準備をし、そして終了します。
webapp2
はMainPage
インスタンスの最終的なステータスを基にして応答を送信します。
アプリケーション自身はwebapp2.WSGIApplication
インスタンスによって表されます。
debug=true
のパラメータをwebapp2.WSGIApplication
のコンストラクタに引数として渡してインスタンスを作成すると、
ハンドラでエラーが発生したりキャッチできない例外が発生した場合に、webapp2
はスタックトレースをブラウザに出力します。
このオプションは、アプリケーションの最終版を配置する前に削除してください。そうしないとあなたのアプリケーションの内部仕様が誤って公開されてしまいます。
以降のチュートリアルでは、 webapp2 の他の機能についても使用します。
webapp2
に関する詳細情報については、webapp2 ドキュメントを参照してください。