2015-09-25 66 views
0

我構建了一個RESTFul應用程序,並使用Angular作爲我的觀點。我想用資源,因爲是它最好的方法,我跟着怎麼對的,並取得了一定的調整由我自己來包含頭API令牌,代碼結束這樣的:AngularJS資源調用多次

fcbMixApp.factory('Resources', ['$resource', 
    function ($resource) { 
     return { 
      seminary: function (apiToken) { 
       return $resource('api/seminaries/:seminary', {}, { 
        save: { 
         method: 'POST', 
         headers: { 
          'Authorization': 'Bearer ' + apiToken 
         } 
        }, 
        update: { 
         method: 'PUT', 
         headers: { 
          'Authorization': 'Bearer ' + apiToken 
         } 
        } 
       }); 
      }, 
      attendant: function (apiToken) { 
       return $resource('api/attendants/:attendant', {}, { 
        save: { 
         method: 'POST', 
         headers: { 
          'Authorization': 'Bearer ' + apiToken 
         } 
        }, 
        update: { 
         method: 'PUT', 
         headers: { 
          'Authorization': 'Bearer ' + apiToken 
         } 
        } 
       }); 
      } 
     } 
    }]); 

但是,當我打電話它在我的控制器上是這樣的:

var Seminary = Resources.seminary(User.getAuthData().access_token); 

我不指望該行向我的api發出任何請求,但它確實如此。我的代碼如下:

Seminary.query(function (data) { 
       $scope.seminaries = data; 
      }); 

所以我最後打了兩個電話。

什麼即時做錯了,或者我應該改變什麼。

在此先感謝。

回答

1

您應該設置一個頭與令牌:

$http.defaults.headers.common["Authorization"] = 'Bearer' + apiToken; 
在資源本身

不能及的。您應該在用戶第一次登錄時進行設置,然後您將發送所有請求。

還要考慮你的資源尋找這樣的事情,一面向隨之而來的一個單獨的一個:

fcbMixApp.factory('Resources', ['$resource', function ($resource) { 
     function setRequestData(data) { 
      var requestData = new Object(); 
      requestData.seminary = data; 
      return angular.toJson(requestData); 
     } 
     return $resource('api/seminaries/:seminary', {}, { 
      save: { 
       method: 'POST', 
       headers: {"Content-Type": "application/json"}, 
       transformRequest: setRequestData 
      }, 
      update: { 
       method: 'PUT', 
       headers: {"Content-Type": "application/json"}, 
       transformRequest: setRequestData 
      } 
     }); 
    }]); 
+0

感謝行設置與AUTH afther登錄的頭,但我的主要問題及其出於某種原因查詢其執行兩次擊中兩次我的API服務器 – bitgandtter