2011-06-20 9 views
5

最近、私はpyjamasフレームワークに出くわしました。伝統的なテンプレートを使用するのではなく、「MVC」の「ビュー」コンポーネント全体をいくつかのhtml + javascript(コンパイルされたPythonで生成)に分離することによって、根本的に異なるWebアプリケーション開発アプローチを奨励します。このクライアント側のビューは、非同期HTTP要求を介してサーバーと通信することが想定されており、フレームワークは通信プロトコルとして 'jsonrpc'を使用することを推奨しています。どのような単純なpythonベースのWSGI互換jsonrpcライブラリ 'パジャマ'のサーバー側で使用するには?

マニュアルでは、djangoベースのjsonrpcコンポーネントを使用していました。しかし、私はほとんどbottle frameworkのような単純で愚かな解決策に慣れています。私が理解する限り、私はそのようなマイクロフレームワークのすべてのコンポーネントを必要としません。 WSGI互換のサーバー、いくつかのルーティング+セッションミドルウェア、およびjsonrpcに関して理解している要求ハンドラはうまくいくでしょう。 WSGI環境にうまくプラグインできる、すぐに利用できるjsonrpc対応のリクエストハンドラの最後の部分に、使いやすい軽量ソリューションを探しています。彼らは何ですか?

ご迷惑をおかけしますが、ご了承ください。

答えて

1

これまでにライブラリを選択した可能性があります。しかし、とにかく。

私はフラスコと、jsonrpc2を使用します。ここにいくつかの擬似コードがあります。私のコードは非常に似ています。

import jsonrpc2 

mapper = jsonrpc2.JsonRpc() 
mapper['echo'] = str 

@app.route('/rpc', methods=['GET', 'POST']) 
def rpc(): 
    #req {"jsonrpc": "2.0", "method": methodname, "params": params, "id": 1} 
    data = mapper(request.json) 
    return jsonify(data) 
+0

実は私はいくつかの他のプロジェクトに移っ。とにかく、あなたがそれをやる方法を知ってうれしいです。再度、感謝します。 – Titon

+0

私はそれを期待していました。 この回答は、検索の対象となっている開発者の方々にとって、このページのほうにあります.-)。 – Shekhar

1

https://github.com/dengzhp/simple-jsonrpc

import jsonrpc 

def add(a, b): 
    return a + b 

def default(*arg, **kwargs): 
    return "hello jsonrpc" 

class MyJsonrpcHandler(jsonrpc.JsonrpcHandler): 
    """define your own dispatcher here""" 
    def dispatch(self, method_name): 
     if method_name == "add": 
      return add 
     else: 
      return default 


def application(environ, start_response): 
    # assert environ["REQUEST_METHOD"] = "POST" 
    content_length = int(environ["CONTENT_LENGTH"]) 

    # create a handler 
    h = MyJsonrpcHandler() 

    # fetch the request body 
    request = environ["wsgi.input"].read(content_length) 

    # pass the request body to handle() method 
    result = h.handle(request) 

    #log 
    environ["wsgi.errors"].write("request: '%s' | response: '%s'\n" % (request, result)) 

    start_response("200 OK", []) 
    return [result] 
関連する問題