ゲストブックアプリケーションのチュートリアルで、
ゲストブックの挨拶文は、guestbook.Greetingクラスによって、データストアに保存しました。
Postサービスも、投稿のデータストアへの保存にGreetingクラスを使用することにします。
import datetime from protorpc import message_types from protorpc import remote import guestbook class PostService(remote.Service): @remote.method(Note, message_types.VoidMessage) def post_note(self, request): if request.when: when = datetime.datetime.utcfromtimestamp(request.when) else: when = datetime.datetime.now() note = guestbook.Greeting(content=request.text, date=when) note.put() return message_types.VoidMessage()
「method」デコレータ(@remote.method)は、2つのパラメータを取ります。
最初のパラメータは、リクエストのデータ型で、
2つ目のパラメータは、レスポンスのデータ型です。
ノートの投稿を受け付けるために、上記の「post_note」メソッドはNoteクラス(メッセージ)のインスタンスをリクエストとして受け取ります。
レスポンスには、「VoidMessage」(protorpc.message_types.VoidMessage)を指定していますが、
これはProtoRPCの組み込み型で、フィールドを持たないメッセージを意味します。
つまり、「post_note」メソッドは、呼び出し側に意味のあるデータを返しません。
エラーが発生しない限り、呼び出し側では、投稿は成功した、と見なします。
Note.whenは、必須フィールドではないので、呼び出し側がセットしているとは限りません。
セットしていない場合、whenにはNoneがセットされています。
「post_note」メソッドは、Noteにタイムスタンプが設定されていない場合、現在時刻を指定したものと見なします。
レスポンスメッセージは、リモートメソッドによってインスタンス化され、戻り値として使われます。
0 件のコメント:
コメントを投稿