使用$resource service访问REST API
Access REST API with $resource service
我正在努力使$resource
服务按预期运行。我试着遵循文档和本教程,似乎提供了一个完整的工作实现。然而,使用这个,我遇到了两个问题。
我的(非常基本的)实现:
the $resource
-service:
app.factory('User', function ($resource) {
return $resource(
'myurl/user/:id',
{id: '@_id'},
{
update: {method: 'PUT'}
}
);
});
我在控制器中是怎么称呼它的
$scope.user = User.get({id:$scope.myId});
//save a new user:
$scope.user.$save(function(){location.href = '#/mainpage';});
//delete a user
$scope.user.$delete({id:$scope.myId},function(){location.href = '#/mainpage';});
//update a user
$scope.user.$update({id: user.id}, function(){location.href = '#/mainpage';});
我的问题:
编辑:解决感谢安德烈Kreienbring。为什么需要为
$delete
服务指定id{id:$scope.myId}
?根据上面的链接,这应该是自动完成。但是,如果我跳过这个,DELETE将转到myurl/user
而不是myurl/user/{myId}
。GET返回一个promise,这样
$scope.user
除了包含用户特定的属性外,还包含$promise
和resolved
的属性。如果我通过PUT将此发送到我的REST API,请求将被拒绝,因为后端无法将请求体解析为User
-Object。无法识别的字段"$promise",未标记为可忽略
为了解决这个问题,我尝试在承诺完成时提取数据:
$scope.user = User.get({id:$scope.myId});
$scope.user.$promise.then(function(data){$scope.test = data});
上面代码中的$scope.test
仍然包含属性$promise
和resolved
。我如何发送一个"干净"的json对象到我的REST API不包括$promise
?
如果参数值以@为前缀,则为该值的对应属性中提取数据对象(在调用操作方法时提供)
所以,当调用$scope.user.$delete({id:$scope.myId}
{id:$scope.myId}
是你的数据对象。
您的paramDefaults选项{id: '@_id'}
使$resource查找数据对象的'id'的值=> $scope.myId。让我们假设这个值是'123'
URL模板参数随后被此值替换,变为myurl/user/123
你想让你的用户(不大写)服务的方法显式:
app.factory('user', function ($resource) {
var User = $resource('myurl/user/:userId', {userId:'@id'});
return {
get: get
};
function get(id){
return User.get({ userId: id }).$promise;
}
});
使用:
user.get($scope.myId).then(function(user){
$scope.user = user;
});
- Amazon S3 REST API大小不正确
- 客户端服务器REST API captcha实现
- 在同一ip但不同端口上使用Rest API
- 从ANGULAL连接到REST API
- 如何在使用loopback REST API时更改gulp-angular项目的端口号
- Cross domain - REST API
- 更改REST API服务器的最佳实践
- DreamFactory REST API POST休息/用户/会话请求总是在IE9中返回错误
- REST API node.js
- 数据未显示 - 余烬 js - Rest API
- 登录后无法使用 ACS REST API 发送推送通知
- 在 Rest API 中发布调用
- REST API 服务器是否应该使用 PUT 接收 JSON 数据或普通表单数据
- 如何使用已经存在的 REST API 后端在 Angular 应用程序中实现登录系统
- 获取文件并从rest api下载
- 使用Angular Resource查询具有字符串参数的REST API
- Visual Studio Team Services Rest API未授权的客户端错误
- 无法通过rest api读取json变量
- Wordpress REST API身份验证,无需登录页面
- 通过REST API/GET请求订阅Mailchimp列表