2017-06-06 79 views
1

我試圖轉換/攔截我的角度+閉合項目中的一些請求,但並非所有請求都將我的camelCase密鑰更改爲snake_case。角度資源 - 攔截並轉換請求/響應數據

我設法在我的配置文件中添加了一個默認的攔截器和變形器$httpProvider,但是這樣做包括模板在內的所有請求。在我的每個Resource配置中添加一個選項,我可以允許/禁止轉換,但是隻有在請求沒有響應時才能訪問配置選項,這意味着我必須首先檢查其JSON是否不理想。

我相信也轉換得到原始請求體(或者它可能是攔截器,我不記得所有的測試我做了),並將其轉換爲JSON等,似乎容易出錯。

因爲一些令人沮喪的原因,$resource的攔截器只允許responseresponseError攔截器。

是否有任何方法來攔截每個請求/響應JSON對象,我可以將變換器保存在它自己的文件/類/工廠中,並允許它或需要該函數並在每個請求上調用它?

最好的路線是什麼?

回答

0

您可以使用$http攔截器。 $resource在後臺使用$http服務發出請求,因此它將被應用。

function MyInterceptor() { 
    return { 
     request: config => { 
      // do your logic here 
      // you can modify only end-points you want to modify by using if statements 
     } 
    } 
} 

function config($httpProvider) { 
    $httpProvider.interceptors.push('MyInterceptor'); 
} 

angular 
    .module('app') 
    .factory('MyInterceptor', MyInterceptor) 
    .config(config);