javascript - Angular JSON-RPC : processing error

标签 javascript json angularjs json-rpc

我正在尝试改进 AngularJS 服务来调用远程 JSON-RPC 服务。根据JSON-RPC规范,当服务器端发生异常时,响应中应包含一个错误对象,其描述如下:

response = {
    jsonrpc: "2.0",
    result: null,
    error: "Description of the error",
    id: 1,
}

...其中“id”是原始发送到服务器的请求的标识符。

我正在尝试改进的 Angular 组件 ( 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 Promise,因此该服务的调用者将发现很难捕获异常。

如何从 $http 转换器中调用用户在调用 $http 服务时最初设置的“错误” promise ?

$http.get(url).then(success(data) {...}, error(data) {...}};

这是正确的方法还是我应该更好地基于拦截器进行修改?

最佳答案

如果您保留原来的代码,您可以定义一个使用 jsonrpc 模块的服务:

angular.module('myApp').
    service('jsonrpcservice', function(jsonrpc) {
        var service = jsonrpc.newService('svc');
        this.get = service.createMethod('getData');

});

..在你的 Controller 中的某个地方:

jsonrpcservice.get({params}).success(function(result){}).error(function(err){});

你可以在$http返回的.error()中处理错误

关于javascript - Angular JSON-RPC : processing error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27747558/

相关文章:

javascript - meteor.js - 设置 Controller 来访问集合

json - 使用curl通过Github API v3创建新的gist

javascript - 从 angularjs 调用 javascript 时出错

php - json_encode 是否足够的 XSS 保护?

python - 从 python 对象导出 JSON 数据

html - 如何使用 Angular 表达式对齐无序列表显示中的内容?

javascript - 对表单验证的 Angular 支持不起作用

javascript - 在显示上执行过渡效果 :none element with hack

javascript - 如何使用 vuetify 向下滚动到页面底部

javascript - Gulp.js GUI 与 Electron