Zend framework ZF2 JSON-RPC-错误响应,数据参数,如何访问?
假设我有一个RPC调用来添加颜色。用户只能添加一次颜色。如果他们第二次添加一个,我想返回一个错误响应,告诉他们他们搞砸了,以及为什么 JSON-RPC错误响应描述了包含数据参数空间的。在这里,似乎应该包含“已添加颜色”的错误代码。但是,我不知道如何在响应中返回这个Zend framework ZF2 JSON-RPC-错误响应,数据参数,如何访问?,zend-framework,zend-framework2,json-rpc,Zend Framework,Zend Framework2,Json Rpc,假设我有一个RPC调用来添加颜色。用户只能添加一次颜色。如果他们第二次添加一个,我想返回一个错误响应,告诉他们他们搞砸了,以及为什么 JSON-RPC错误响应描述了包含数据参数空间的。在这里,似乎应该包含“已添加颜色”的错误代码。但是,我不知道如何在响应中返回这个 $jsonRpc = new Server(); $jsonRpc->setClass(new Testi()); $jsonRpc->getRequest()->setVersion(Server::VERSION
$jsonRpc = new Server();
$jsonRpc->setClass(new Testi());
$jsonRpc->getRequest()->setVersion(Server::VERSION_2);
if ($_SERVER['REQUEST_METHOD'] == 'GET') {
echo $jsonRpc->getServiceMap()->setEnvelope(Smd::ENV_JSONRPC_2);
}
else {
$jsonRpc->handle();
}
class Testi {
const ERROR_CODE_COLOR_EXISTS = 5;
private $colors = ['red', 'green'];
/**
* @param $color
* @return array
*/
public function addColor($color) {
if (in_array($color, $this->colors)) {
throw new \Exception('Color exists');
}
else {
$this->colors[] = $color;
}
return $this->colors;
}
}
在返回错误响应的程度上,这是可行的,但我没有选择包含错误代码(self::error\u code\u COLOR\u存在)
如何将信息放入该数据参数
谢谢,
亚当发现你有两个选择: 1) 向异常添加参数:
$e = new Exception('I pooped my pants');
$e->color = 'brown';
$->smell = 'bad';
然后,颜色和气味将出现在错误响应的数据参数中
2) 将服务器(在我的代码中,$jsonRpc)传递到对象中(在我的代码中,它看起来像:newtesti($jsonRpc)),并使用fault(…)方法,该方法允许将数据数组/对象传递到其中
后一种方法为您提供了更大的灵活性,因为您可以执行数据->代码,数据->消息,这两种方法都不能在$e对象上设置,因为它们是现有的受保护参数。但是,然后将模型耦合到$jsonRpc服务器,这是不好的
尽管如此,这并不是应对上述情景的正确方式。错误响应或多或少是为真实的、不可恢复的服务器错误保留的,类似于真实的异常,而不是用户验证错误。在我的例子中,最好定义一种响应类型,允许我使用适当的响应代码返回成功/失败值。{成功:错误,代码:5}
干杯,
亚当
$e = new Exception('I pooped my pants');
$e->color = 'brown';
$->smell = 'bad';