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) {...}};
這是一個正確的方法還是我應該更好地基於攔截器的修改?