Zope2的JSON-RPC服务器
项目描述
从Zope2提供JSON-RPC请求服务。
文档
该产品修补了发布者以在Zope2内提供JSON/RPC请求服务。它基于
Balazs Ree为Zope2早期版本提供的原始产品
Jim Washington为zope3提供的jsonserver jwashin@vt.edu和贡献者
ZPublisher/xmlrpc.py
JSON是JavaScript对象表示法。JSON-RPC执行与XML-RPC相同的服务,但格式是JavaScript脚本对象而不是XML,内容类型是‘application/json-rpc’而不是‘text/xml’。
该项目覆盖了一些基础Zope2代码,以提供正确监听和响应“application/json”类型请求的附加功能。
该产品已在Zope 2.10和Zope 2.13上进行了测试
安装
将此egg添加到您的Zope/Plone构建配置中。
用法
类似于xmlrpc用法。
jsonserver查找内容类型“application/json”,并将这些请求作为JSON-RPC处理。其他HTTP请求不受影响,并可能按预期工作。
对于除网络浏览器(JavaScript)以外的通信,simplejson或其他json实现都有读取和写入JSON对象的功能。
JSON-RPC请求的文本看起来像
{'id':jsonid,''method':remotemethod,'params':methodparams}
其中
o jsonid 是一个字符串或数字,可以识别这个特定的请求
o remotemethod 是在服务器上要调用的方法
o methodparams 是方法的参数列表(JavaScript Array)
JSON-RPC响应的文本看起来像
{'id':jsonid,''result':returnedresult,'error':returnederr}
其中
o jsonid 是请求中发送的相同的 jsonid
o returnedresult 是结果的 JavaScript 表示形式或 null
o returnederr 是错误状态的 JavaScript 表示形式
返回结果或 returnederr 将是 JavaScript 的 null 值。
实际实现例如使用 urllib 留作读者练习。提示:使用 minjson.write(object) 和 minjson.read(string) 方法在传输前后进行转换。
五个扩展
“json”命名空间(http://namespaces.zope.org/json)定义了 page 和 pages 指令。json:page 在使用上与 browser:page 相同,但声明的页面或方法可以在 json 请求中被调用,但对于正常请求将是不可见的。
browser:page 和 browser:pages 声明将对正常和 json 请求都可用。
json:page 声明可以从代码中调用,并且它们的宏可以从其他模板中可见。
<json:page name="myjsonrpcview" for="*" class=".jsonrpc.MyJsonRpcView" permission="zope2.ViewManagementScreens" />
代码
产品的代码可以在以下位置找到:https://bitbucket.org/tomgross/products.jsonserver
变更历史
1.2b6 (2013-06-17)
Plone 4.3 兼容性 [rristow]
1.2b5 (2012-03-21)
将 zcml 文件包含在 Manifest.in 中 [tom_gross]
1.2b4 (2012-03-21)
另一个 Manifest.in 修复 [tom_gross]
1.2b3 (2012-03-21)
添加 Manifest.in 并修复损坏的 egg [tom_gross]
1.2b2 (2012-03-20)
使用 simplejson/json 而不是 minjson 实现 [tom_gross]
仅允许 utf-8 作为输入编码 [tom_gross]
Zope 2.13 兼容性 [tom_gross]
修复了与 diazo 一起使用时出现的问题 [tom_gross]
1.2b1 (2011-10-07)
修复了带有 charset 的 content-type [tom_gross,感谢 Steve Spicklemire]
将 has_key 改为 __contains__ 调用 [tom_gross]
修复了发送未经授权的状态 [tom_gross]
根据 JSON-RPC 规范返回错误对象 http://json-rpc.org/wd/JSON-RPC-1-1-WD-20060807.html#ErrorObject [tom_gross,感谢 Steve Spicklemire]
1.2a1 (2010-07-15)
针对 Zope 2.10 的修复
从旧产品迁移到 http://www.zope.org/Members/ree/jsonserver2 [tom_gross]
贡献者
Tom Gross,作者
Balazs Ree
Rodrigo Ristow