2013-12-10 193 views
1

自從我使用angular並且我很喜歡它已經過了3個月。使用它完成了一個應用程序,現在我正在對代碼進行重構或改進我的代碼以獲得更好的實踐。我有一個使用的$ HTTP的API service.js,我想將其遷移到使用$資源:)從http遷移到ngResource Angular

我使用$ HTTP這裏有我的API代碼示例:

Service.js 
authenticatePlayer: function(postData) { 
     return $http({ 
      method : 'POST', 
      url  : api + 'auth/player', 
      data : postData, 
      headers : {'Content-Type' : 'application/json'} 
     }); 
     }, 

#Controller.js 
Api.authenticatePlayer(postData).then(function (result){ 
    //success 
}, function(result) { 
    //error also this will catch error 400, 401, and 500 
}); 

上面的代碼正在現在這裏是我使用$資源第一次嘗試:

authenticate: function() { 
    return $resource(api + "auth/:usertype", 
     { 
      typeOfUser : "@usertype" //types can be player, anonymous, admin 
     }, 
     { 
      post : { method : "POST" } 
     } 
    ); 
} 
#Controller 
var postData = { 
    email : scope.main.email, 
    password : scope.main.password 
}; 

var loginUser = new Api(postData); 
loginUser.$post(); //error T__T 

這只是我走多遠,不知道如何使用$資源從我的控制器數據傳遞給我的API。這只是我api電話的一部分,還有一堆,但現在這樣做。 :d。

任何幫助,非常感謝。

感謝

回答

1

你可以試試這個:

API

authenticate: function(){ 
    return $resource(api+"auth/:usertype",{},post:{method:"POST"}); 
} 

注:用戶類型的URL意味着你傳入POSTDATA用戶類型屬性的值將取代部分URL

控制器

var postData = {email:scope.main.email,password:scope.main.password}; 

API.authenticate().post({usertype:'player'},postData,function(response){ 
    console.log(response); 
}); 

或者你可以獲取響應這樣的:

var response = API.authenticate().post({usertype:'player'},postData); 

希望這是有幫助的。

+0

嗨,感謝您花時間回答我的問題。 :d。我將如何更改控制器中的typeOfUser?由於我有diff用戶。再次感謝.. – user2720708

+0

您可以將用戶類型數據添加到postData中並使用:usertype動態更改您的RESTful數據源URL。答案已更新。 – Chickenrice

+0

好的,我差不多完成了,最後一件事是我收到了500條回覆。我注意到問題在於我傳遞的數據是以「查詢字符串參數」的形式出現的,據說我必須將數據作爲請求有效載荷傳遞。我會怎麼做? – user2720708