Zend_Json_Server与JSON-RPC规范

3

ZF实现的JSON-RPC 2.0协议只允许错误代码:

const ERROR_PARSE           = -32768;
const ERROR_INVALID_REQUEST = -32600;
const ERROR_INVALID_METHOD  = -32601;
const ERROR_INVALID_PARAMS  = -32602;
const ERROR_INTERNAL        = -32603;
const ERROR_OTHER           = -32000;

此外,range(-32099, -32000)是在JSON-RPC规范中预定义和/或保留的。至少这是我从规范中得到的:

错误码从-32768到-32000用于预定义错误。该范围内的任何代码,但未在下面明确定义的代码均保留供将来使用。 这些错误代码与以下网址建议的XML-RPC几乎相同: http://xmlrpc-epi.sourceforge.net/specs/rfc.fault_codes.php

代码 消息 含义 -32700 解析错误 服务器接收到无效的JSON。 服务器解析JSON文本时出现错误。 -32600 无效请求 发送的JSON不是有效的请求对象。 -32601 方法不存在 方法不存在/不可用。 -32602 无效参数 方法参数无效。 -32603 内部错误 内部JSON-RPC错误。 -32000到-32099 服务器错误 保留用于实现定义的服务器错误。

其余空间可用于应用程序定义的错误。

规范中并没有说您不能使用-100或100等其他数字作为错误码。我有什么遗漏的吗?

我认为ZF已经将“服务器错误”和“应用程序错误”混淆为同一件事,而当阅读上面的sourcefourge链接时,显然协议的作者有不同的想法,允许应用程序开发人员使用大量的空间:

此外,范围为-32099..-32000(含)的范围保留用于实现定义的服务器错误。不能明确地映射到此规范定义的特定错误的服务器错误应分配到此范围内的编号。这使其余空间可供应用程序定义的错误使用。


有人吗?我甚至创建了一个工单,但我得到的只是O'Phinney的评论,没有解决问题:http://framework.zend.com/issues/browse/ZF-11991?focusedCommentId=49518#comment-49518 - user1050499
1个回答

0

我在几个项目中使用ZF的JSON-RPC组件。它运行得相当不错,但我几乎不认为它是JSON-RPC规范的典范。据我所知,只有少数客户端实际上对其实现进行了Zend_Json_Server测试,因此它并没有被广泛采用。曾经有一次,我不得不修补Zend_Json_Server以使其与一个客户端配合使用,因为它没有正确遵循规范(这已经被修复了)。

所以基本上我想说的是“好观点,你可能是对的。”如果这让你感到不舒服,只需fork zf2并提交一个更好的规范实现的拉取请求 - 当你查看差异时,更容易获得积极/消极反馈。

如果他们接受了,就提交一个zf1的补丁来合并下游。


我们刚刚重写了Zend_Json_Server :: fault()和Zend_Json_Server,这至少为我们解决了问题。我创建了一个工单来报告这个问题,如果没有人愿意认真看待这个问题,那就这样吧。我不会浪费更多时间附加一个永远不会被查看的补丁。 - user1050499
值得一提的是,对于 zf2 的拉取请求我们总是会进行审核的。 - Stephen Fuhry

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接