我是使用restangular的新手。话虽如此,我有下面的POST调用,由于某种原因没有按预期工作。
Restangular.all("user").all("login").post({username: 'test@user.com', password: 'xyz'}).then(function(account)
{
console.log(account);
});
我看到POST请求转到网址 / api / v1 / user / login 这是正确的网址。但是,post参数似乎没有通过。查看相同的POST请求,我没有看到用户名/密码数据。此外,我的API正在抛出未经授权的错误,该错误告诉我它无法根据凭据验证用户。
我也试过以下变种......
Restangular.one("user").post("login", {username: 'test@user.com', password: 'xyz'}).then(function(account)
{
console.log(account);
})
仍然没有发送帖子数据。我也试过......
Restangular.all("user").post("login", {username: 'test@user.com', password: 'xyz'}).then(function(account)
{
console.log(account);
})
这似乎会创建一个不正确的网址 / api / v1 / user ,并且不会显示任何帖子数据。
我可以对 / api / v1 / user / login 执行cURL POST请求而不会发出POST数据。
cURL -X POST /api/v1/user/login -d "username=test@user.com&password=xyz"
我也更新了我的卷曲声明@David在他的答案中建议......
curl -X POST -d '{"username": "test@user.com", "password": "xyz"}' '/api/v1/user/login' -H Content-Type:application/json
哪个仍然奏效。但是,使用restangular发布不会......
Restangular.all("user").post("login", {username: 'test@user.com', password: 'xyz'}).then(function(account)
{
console.log(account);
})
其他想法?
答案 0 :(得分:0)
我不是Restangular的专家,但似乎.all()
为对象创建了一整套REST API。在这种情况下,我认为你只想打电话给.all()
"用户"并使用login作为子资源。
var users = Restangular.all("user");
users.post('login', {
username: 'test@user.com',
password: 'xyz'
}).then(...);
此外,您需要确保您的服务器实际上有一个POST /users/login
端点。
答案 1 :(得分:0)
我看到了一年前的问题,但无论如何。我遇到了同样的问题而且我发现我找到了解决这个问题的方法。一切都在Restangular.setRequestInterceptor事件中。因此,如果您的代码中有这样的拦截器,那么您需要确保在执行所需操作后它返回已接受的元素参数。例如,我之前所拥有的:
self
那应该怎么做:
Restangular.setRequestInterceptor(function () {
$rootScope.validationErrors = [];
activeRequests++;
$rootScope.loading = true;
})
答案 2 :(得分:0)
你发错了邮政参数,你有:
Restangular.all("user").all("login")
.post({username: 'test@user.com', password: 'xyz'})
.then(function(account) {
console.log(account);
});
所以,你需要做一些改变,它会有效(正确发送身体参数):
Restangular.all("user").all("login")
.post('', {username: 'test@user.com', password: 'xyz'})
.then(function(account) {
console.log(account);
});
注意:我在restangular v1.5.2
上尝试过 祝你好运!