サイトのトップへ戻る

Google App Engine ドキュメント日本語訳

webapp2 フレームワークの説明

ウェブサーバーゲートウェイインタフェース (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を使用します。



Hello, webapp2!

webapp2 アプリケーションには二つのパーツがあります:

  • リクエストを処理して応答を作成するための、一つ以上の RequestHandler クラス
  • 受信したリクエストをURLに基づいたハンドラへルーティングするためのWSGIApplication インスタンス

それでは、あらためてHelloアプリケーションを見てみましょう:

helloworld.py
View on GitHub
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)


webapp2 の動作

このコードでは、ルートURL(/)に紐付けられているリクエストハンドラ MainPageが定義されています。 webapp2がURL /へのHTTP GETリクエストを受信した時、MainPage クラスをインスタンス化してインスタンスの getメソッドを呼び出します。 メソッド内では、self.requestを使ってリクエストに関する情報にアクセスできます。 一般的に、このメソッドはself.responseにプロパティを設定して応答の準備をし、そして終了します。 webapp2MainPageインスタンスの最終的なステータスを基にして応答を送信します。

アプリケーション自身はwebapp2.WSGIApplicationインスタンスによって表されます。 debug=trueのパラメータをwebapp2.WSGIApplicationのコンストラクタに引数として渡してインスタンスを作成すると、 ハンドラでエラーが発生したりキャッチできない例外が発生した場合に、webapp2はスタックトレースをブラウザに出力します。 このオプションは、アプリケーションの最終版を配置する前に削除してください。そうしないとあなたのアプリケーションの内部仕様が誤って公開されてしまいます。

以降のチュートリアルでは、 webapp2 の他の機能についても使用します。 webapp2に関する詳細情報については、webapp2 ドキュメントを参照してください。

Usersサービスを使用する >>