2014-10-03 66 views
3

我是新來的使用restangular。這就是說,我有下面的POST調用,由於某種原因沒有按預期工作。Restangular POST不傳遞數據參數

Restangular.all("user").all("login").post({username: '[email protected]', password: 'xyz'}).then(function(account) 
{ 
    console.log(account); 
}); 

我看到POST請求走出去的URL /API/V1 /用戶/註冊這是正確的URL。但是,帖子參數似乎沒有通過。看着相同的POST請求,我沒有看到用戶名/密碼數據。另外,我的API拋出一個未經授權的錯誤,這對我說,它無法根據憑證驗證用戶。

我也試過變種如下...

Restangular.one("user").post("login", {username: '[email protected]', password: 'xyz'}).then(function(account) 
{ 
    console.log(account); 

}) 

不過後的數據不會出現被越來越發送。我也曾嘗試...

Restangular.all("user").post("login", {username: '[email protected]', password: 'xyz'}).then(function(account) 
{ 
    console.log(account); 

}) 

這似乎是創建一個不正確的URL /API/V1 /用戶和無後的數據仍然是不可見的。

我可以執行cURL POST請求到/api/v1/user/login傳遞POST數據沒有問題。

cURL -X POST /api/v1/user/login -d "[email protected]&password=xyz" 

我也更新了我的捲曲語句作爲@大衛在他的回答提出...

curl -X POST -d '{"username": "[email protected]", "password": "xyz"}' '/api/v1/user/login' -H Content-Type:application/json 

仍然奏效。然而,張貼與restangular不...

Restangular.all("user").post("login", {username: '[email protected]', password: 'xyz'}).then(function(account) 
    { 
     console.log(account); 

    }) 

其他想法?

+0

剛剛面對同樣的重要行爲。你解決了這個問題嗎? – Maybe 2015-09-01 10:10:59

+0

我也有同樣的問題,是否有任何答案?我的意思是它是不能通過身體參數restangular? – 2015-12-04 12:42:42

回答

0

我不是Restangular的專家,但似乎.all()爲一個對象創建了一套完整的REST API。在這種情況下,我認爲你只想在「user」上調用.all(),並使用login作爲子資源。

var users = Restangular.all("user"); 

users.post('login', { 
    username: '[email protected]', 
    password: 'xyz' 
}).then(...); 

另外你需要確保你的服務器實際上有一個POST /users/login端點。

+0

謝謝我已經嘗試過這種變體,但仍然無法正常工作。我已更新我的問題以包含其他詳細信息。 – Jason 2014-10-03 19:55:11

0

我看到這是一個一年的問題,但無論如何。我面臨同樣的問題,我比爾我找到了解決這個問題的方法。所有的事情都在Restangular.setRequestInterceptor事件中。所以如果你的代碼中有這樣一個攔截器,那麼你需要確保它在你所需的操作完成後返回可接受的元素參數。例如這之前,我有什麼:

Restangular.setRequestInterceptor(function() { 
      $rootScope.validationErrors = []; 
      activeRequests++; 
      $rootScope.loading = true;   
     }) 

而這就是應該用它做:您要發送

Restangular.setRequestInterceptor(function (element, operation, what, url) { 
     $rootScope.validationErrors = []; 
     activeRequests++; 
     $rootScope.loading = true; 
     return element; 
    }) 
0

不正確的post數據,您有:

Restangular.all("user").all("login") 
.post({username: '[email protected]', password: 'xyz'}) 
.then(function(account) { 
    console.log(account); 
}); 

所以,你需要做一點改變,它會起作用(正確發送body params):

Restangular.all("user").all("login") 
.post('', {username: '[email protected]', password: 'xyz'}) 
.then(function(account) { 
    console.log(account); 
}); 

注意:我試過了restangular v1.5.2

祝你好運!