GAEpでiPhone向けWebアプリを作る (6)GAEp 上にリクエストハンドラを定義する

前回の続きです。

GAEp 上にリクエストハンドラを定義する

続いて、リクエストハンドラを定義していきます。
今回は、4つのリクエストハンドラを定義します。各リクエストハンドラの用途は以下です。

  1. ビューとなる html の取得
  2. ToDo アイテムのリスト取得API
  3. 特定の ToDo アイテムの作成/変更API
  4. 特定の ToDo アイテムの削除API

今回は実装しません。API だけ用意します。

リクエストハンドラのテンプレート作成

以下のようにします。

todo/handlers.py内

import logging

from google.appengine.ext import webapp

#
class MainView(webapp.RequestHandler):
  #
  def get(self):
    pass

#
class ToDoList(webapp.RequestHandler):
  #
  def get(self):
    logging.debug('ToDoList#get')
    return

#
class SaveHandler(webapp.RequestHandler):
  #
  def post(self):
    logging.debug('SaveHandler#post')
    return

#
class DeletionHandler(webapp.RequestHandler):
  #
  def post(self):
    logging.debug('DeletionHandler#post')
    return

各リクエストハンドラは、RequestHandler クラスのサブクラスで定義します。リファレンスは以下です。

各リクエストハンドラの役割は以下です。

MainView
ビューの取得用。ここにアクセスされるとメインとなるビューを html で返す。アクセスポイント
ToDoList
ToDo アイテムのリスト取得 API。このハンドラにアクセスしたユーザの最近の20個の ToDo アイテムをリストで返す。GET メソッドのみサポート
SaveHandler
特定のユーザの特定の ToDo アイテムの作成または変更を行う API。POST メソッドのみサポート。
DeletionHandler
特定の ToDo アイテムの削除を行う API。POST メソッドのみサポート。

それぞれ特に難しい部分はありません。

リクエストハンドラの URL マッピング

上記の各リクエストハンドラを、URL マッピングしておきます。

main.py内

import logging

from todo.handlers import MainView
from todo.handlers import ToDoList, SaveHandler, DeletionHandler

from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app


application = webapp.WSGIApplication(
                [
                ('/todo/main', MainView),
                ('/todo/list', ToDoList),
                ('/todo/savereq', SaveHandler),
                ('/todo/deletereq', DeletionHandler),

                ], debug=True)

def main():
  run_wsgi_app(application)

if __name__ == "__main__":
  main()

WSGIApplication クラスのコンストラクタで URL マッピングを行います。エイリアスとリクエストハンドラの組み合わせをタプルで結びつけたリストを教えるだけ。
レファレンスは以下です。

参考

Google App Engine については、基本的に Google が公開しているデベロッパーガイドを見ればだいたいのことはわかります。内容もわかりやすいです。

特に、Google App Engine Python については、以下です。

基本的にはこれらのサイトを見ればほとんどのことはわかりますが、その他に僕は以下の本を参考にしています。

Programming Google App Engine

Programming Google App Engine

和訳も出ているようです。

プログラミング Google App Engine

プログラミング Google App Engine