2014-10-03 3 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" 

Я также обновил свой локон заявление как @David предложил в своем ответе ...

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

Какие еще работал. Тем не менее, размещение с рестатулярным не ...

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

    }) 

Дополнительные идеи?

+0

Только что столкнулся с таким же реляционным внешним видом. Вы решили эту проблему? – Maybe

+0

У меня такая же проблема, есть ли для этого ответ? Я имею в виду, что он не может передавать параметры тела? –

ответ

0

Я не эксперт в Restangular, но кажется, что .all() создает полный набор REST API для объекта. В этом случае я думаю, что вы только хотите позвонить .all() на «пользователь» и использовать логин в качестве субресурса.

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

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

Кроме того, необходимо убедиться, что ваш сервер на самом деле имеет POST /users/login конечную точку.

+0

спасибо, что я пробовал этот вариант, но, по-прежнему не работает. Я обновил свой вопрос, чтобы включить дополнительные сведения. – Jason

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

Вы неправильно посылать почтовые Params, у вас есть:

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

Так , вам нужно внести небольшое изменение, и это будет работать (правильно отправить параметры тела):

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

Примечание: я попробовал это на restangular v1.5.2

Удачи вам!

Смежные вопросы