サーバーがやりとりをするためのデータ型です。
「メッセージ」は、「Message」(protorpc.messages.Message)を継承したクラスとして定義します。
データフィールドはクラスの属性に相当します。
例として、ゲストブックアプリケーションでは、ユーザーはノートの投稿ができます。
そのノートを表現するメッセージを作ってみましょう。
from protorpc import messages class Note(messages.Message): text = messages.StringField(1, required=True) when = messages.IntegerField(2)
このノートメッセージは、「text」と「when」という、2つのフィールドを持ちます。
それぞれのフィールドは型を持ちます。
textフィールドは文字列(ユニコード文字列)であり、ユーザーがゲストブックに投稿した文章を表します。
whenフィールドは整数であり、ノートが投稿された際のタイムスタンプを表します。
それぞれのフィールドは、一意の数値を持ちます。
(フィールド定義の最初の引数のことです。ノートメッセージの場合、「text」が1で、「when」が2です。)
この数値は、データをネットワークに流す際に、フィールドの識別子として利用されます。
(名前は識別子として使用しません。)
フィールドの値は、Noteクラスのコンストラクタでセットできます。
import time note_instance = Note(text=u’Hello guestbook!’, when=int(time.time())
これらのフィールドは、通常のPythonクラスの属性と同様に読み書きできます。
例えば、
print note_instance.text note_instance.text = u‘Good-bye guestbook!’ print note_instance.text
とした場合、この出力は以下のようになります。
Hello guestbook! Good-bye guestbook!
フィールドは、値の設定を必須にすることも、しないこともできます。
デフォルトは必須ではありませんが、フィールド定義に「required=True」を追加することで、必須になります。
メッセージのインスタンスが初期化済みである、と見なされるためには、必須フィールドが設定されている必要があります。
そして、ProtoRPCサービスは、初期化済みであるとみなされたメッセージのみ、受け取ることができます。
0 件のコメント:
コメントを投稿