最近,我偶然发现了pyjamas框架。它鼓励完全不同的web应用程序开发方法,通过将MVC的整个“view”组件分离成一些html + javascript (用编译的python生成),而不是使用传统的模板。此客户端“视图”应通过异步HTTP请求与服务器通信,框架建议使用“jsonrpc”作为通信协议。
在他们的文档中,他们使用了基于django的jsonrpc组件。但我主要习惯于像bottle framework这样简单而愚蠢的解决方案。据我所知,我甚至不需要这些微框架的所有组件。一个WSGI兼容的服务器,一些路由+会话中间件和一个能理解jsonrpc的请求处理器就可以做得很好。我正在为最后一部分寻找一个易于使用的轻量级解决方案-易于获得的支持jsonrpc的请求处理器,可以很好地插入到WSGI环境中。他们有吗?
请原谅并纠正我对术语的误用/误解。
发布于 2011-09-12 20:04:46
您现在可能已经选择了某个库。但不管怎样。
我使用flask和jsonrpc2。下面是一些psudo代码。我的代码非常相似。
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)发布于 2011-12-09 16:19:55
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]https://stackoverflow.com/questions/6415365
复制相似问题