1
我正在尝试改进用于调用远程JSON-RPC服务的AngularJS服务。根据JSON-RPC说明书中,当发生异常时在服务器侧,响应应该包括具有相同的内容的错误对象:Angular JSON-RPC:处理错误
response = {
jsonrpc: "2.0",
result: null,
error: "Description of the error",
id: 1,
}
...,其中“id”为的标识符请求原始发送到服务器。
我试图改进的角度组件(https://github.com/ajsd/angular-jsonrpc)使用$ http变换器处理来自服务器的响应。我修改了原来的变压器,使新的一个看起来是这样的:
transforms.push(function(data) {
//Original code: return data.id === id ? data.result || data.error : null;
if (data.error !== null) {
throw data.error;
}
if (data.id !== id) {
throw '[jsonrpc] Wrong response ID, id = ' + data.id;
}
return data.result;
});
正如你所看到的,我把有错误的描述异常;这是一个非常糟糕的解决方案,因为该服务基于$ http promises,因此,服务的调用者会发现难以发现异常。
如何从$ http转换器中调用用户最初在调用$ http服务时设置的“错误”保证?
$http.get(url).then(success(data) {...}, error(data) {...}};
这是一个正确的方法还是我应该更好地基于拦截器的修改?