$http服务提供了一个非常低级的实现,可以用来发送XHR请求,同时它还提供了很大的可控性和灵活性。但是,在大多数情况下,我们需要处理对象,以及封装了特定属性和方法的对象模型,例如一个person对象。
$resource就是对将对象状态持久化到服务器中,Angular中允许我们用描述性的方式来定义对象的模型,它可以描述一下内容:
1)资源在服务器端的URL
2)常用的请求参数类型
3)一些附加的方法,(你可以自动获得get,save,query,remove,delete方法,这些方法为对象模型包装了特定的功能和业务逻辑)
4)期望获得的响应类型(一个数组或者是一个对象)
5)协议头
使用Angular所提供的$resource对象,你可以根据各种需求查询服务器;除此之外,你可以把服务器返回的对象当成已经持久化好的数据模型,你可以修改他们,并且可以把它们持久化。
ngResource是一个独立的,可选的模块,你需要:
1)加载的脚本文件中包含angular-resource.js
2)在模块依赖声明中包含ngResource
3)在需要的地方使用注入的$resource服务
$q 服务,也就是promise服务,是为了更能够实现异步调用,使得异步调用能够更像同步调用,其实就是一个盒子,里面需要利用$resource服务进行真正的异步调用。