2015-01-02 3 views
1

원격 JSON-RPC 서비스를 호출하기위한 AngularJS 서비스를 개선하려고합니다.각도 JSON-RPC : 처리 오류

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

... "ID"는 식별자이다 예외가 서버 측에서 발생할 때 JSON-RPC 스펙에 따르면, 응답은 동일한 설명에 오류 객체를 포함한다 요청 원본은 서버로 전송됩니다.

향상시키고 자하는 각도 구성 요소 (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) {...}}; 

올바른 방법입니까, 아니면 인터셉터를 기반으로 수정해야합니까?

답변

1

당신이 원래 당신이 JSONRPC 모듈을 사용하는 서비스를 정의 할 수 있었다 당신은 코드를 방치하면 : 당신이 처리 할 수있는

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

: 어딘가에 컨트롤러 것 말이다

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

}); 

을 .error()의 오류가 $ http

에 의해 반환되었습니다.