2011年6月30日木曜日

02.Helloサンプル

次のコードは、ProtoRPCで定義された、簡単なRPCサービスの例です。

from google.appengine.ext import webapp
from google.appengine.ext.webapp import util
from protorpc import messages
from protorpc import remote
from protorpc.webapp import service_handlers
class HelloRequest(messages.Message):
  my_name = messages.StringField(1, required=True)
class HelloResponse(messages.Message):
  hello = messages.StringField(1, required=True)
class HelloService(remote.Service):
  
  @remote.method(HelloRequest, HelloResponse)
  def hello(self, request):
    return HelloResponse(hello='Hello there, %s!' %
                         request.my_name)
service_mappings = service_handlers.service_mapping(
    [('/hello', HelloService),
    ])
application = webapp.WSGIApplication(service_mappings)
def main():
  util.run_wsgi_app(application)
if __name__ == '__main__':
  main()
 この簡単なサービスは、クライアントから、ユーザーの名前を受け取ります。(HelloRequest.my_name)
そして、そのユーザーに対する挨拶メッセージを返します。
(HelloResponse.hello)

注目して欲しいのは、これがサーバー側で書かなければならないコードのすべてであり、
PythonからJSONに変換したり、HTTPリクエストハンドラを書く必要はない、ということです。

次に、JQueryを使って、javascriptからこのサービスを使う方法を示します。


  $.ajax({url: ‘/hello.hello’,
          type: 'POST',
          contentType: 'application/json',
          data: ‘{ my_name: Bob }’,
          dataType: 'json',
          success: function(response) {
            // The response is { hello: “Hello there, Bob!” }
            alert(response.hello);
          }
         });
このコードは、サーバーにリクエストをJSONで送り、サーバーはレスポンスをJSONで返します。
ProtoRPCのメッセージ型は、よく使われるデータ型に対応していますので、
JQueryのsuccessハンドラを使うことで、簡単にjavascriptオブジェクトに変換できます。

0 件のコメント:

コメントを投稿