跳转到主要内容

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)定义了 pagepages 指令。json:page 在使用上与 browser:page 相同,但声明的页面或方法可以在 json 请求中被调用,但对于正常请求将是不可见的。

browser:pagebrowser: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)

贡献者

  • Tom Gross,作者

  • Balazs Ree

  • Rodrigo Ristow

由以下机构支持