AngularJs $resource 高大上的数据交互

$resourcejson

建立一个resource对象的工厂函数,可让你安全的和RESFUL服务端进行数据交互。后端

须要注入 ngResource 模块。angular-resource[.min].jsapi

默认状况下,末尾斜杠(能够引发后端服务器不指望出现的行为)将从计算后的URL中剥离。数组

这个能够经过$resourceProvider配置:缓存

app.config(["$resourceProvider",function($resourceProvider){
      $resourceProvider.defaults.stripTrailingSlashes = false;
  }])

依赖:$http安全

使用:$resource(url,[paramDefaults],[actions],options);服务器

url:一个参数化的url模板,带有前缀参数(如:/user/:username)。若是你使用的是带端口号的URL(如:http://example.com:8080/api),则须要慎重考虑。若是带有后缀(如:http://example.com/resource.json 或者 http://example.com/:id.json 或者 http://example.com/resource/:resource_id.:format)。若是后缀以前的参数是空的,在这状况下:resource_id 比 /.优先执行,若是你须要这个序列出现而不崩溃,那么你能够经过/\.避免。restful

paramDefaults:url参数的默认值,这些能够在方法重写。若是参数的任何一个值是函数,它将做为每一次请求获取的参数值而被执行(除非该参数被忽略的)。app

参数对象中的每一个键值对都是先绑定到一个url模板,任何多余的密钥都被附加到url query的“?”后。 /path/:verb +{verb:’greet’,salutation:’hello’}  =>  /path/greet?salutation=helloide

actions: 用户对于resource行为的默认设置进行扩展的自定义配置的散列,该配置将会以$http.config的格式建立。

action: 字符串,action的名称,这个名称将成为resource对象方法的名称。

method:字符串,http方法(不区分大小写,如GET, POST, PUT, DELETE, JSONP等)。

params:对象,此次行动预先设定的参数。若是任何参数的值是一个函数,当一个参数值每一次须要得到请求时都会被执行(除非该参数被忽略的)。

url:字符串,行为指定的网址。

isArray:boolean,若是为true,那么这个行为返回的对象是个数组。

transformRequest:函数/函数的数组。转换函数或者一个包含转换函数的数组。转换函数获取http请求体和请求头,而且返回他们的转换版(一般是序列化)。

transformResponse:函数/函数的数组。转换函数或者一个包含转换函数的数组。转换函数获取http响应体和响应头,而且返回他们的转换版(一般是序列化)。

cache:boolean,若是为true,一个默认的$http缓存将被做为请求的缓存,不然若是存在一个用$cacheFactory建立的缓存实例,则将用于缓存。

timeout:数值,毫秒,超时则让请求停止。

withCredentials:boolean,是否设置withcredentials flag的XHR对象。查看更多信息的凭据。

responseType:字符串,响应头类型。

interceptor:对象,拦截对象有两个可选方法-response和responseError。

Options:扩展$resourceProvider行为的自定义设置,惟一支持的选项是stripTrailingSlashes,boolean类型,若是为真,url尾部的斜杠会被移除(默认为true)。

五种默认行为

{

  “get”:{method:“get”},

  “save”:{method:“post”}

  “query”:{method:“get”,isArray:true}

  “remove”:{method:“delete”}

  “delete”:{method:“delete”}

}

get([params],[success],[error]);

save([params],postData,[success],[error]);

query([params],[success],[error]);

remove([params],postData,[success],[error]);

delete([params],postData,[success],[error]);

$save([params],[success],[error]);

$remove([params],[success],[error]);

使用代码:

(function () {
      angular.module("Demo", ["ngResource"])
      .controller("testCtrl", ["$resource",testCtrl]);
      function testCtrl($resource) {
          var myResource = $resource("/url/_url", {}, {
              myPost: {
                  method: "post",
                  url: "/newUrl/_newUrl",
                  params: { id: "4" },
                  interceptor: {
                      response: function (d) {
                          console.log(d);
                      },
                      responseError: function (d) {
                          console.log(d);//这里的是随便写的地址,因此执行了error里的函数,可打印看参数及结果
                      }
                  }
              }
          });
          myResource.get({ id: "1" }, function (d) {
              console.log(d);
          }, function (d) {
              console.log(d);//这里的是随便写的地址,因此执行了error里的函数,可打印看参数及结果
          });
          myResource.query({ content: "text" }, function (d) {
              console.log(d);
          }, function (d) {
              console.log(d);//这里的是随便写的地址,因此执行了error里的函数,可打印看参数及结果
          });
          myResource.save({ text: "Hello World" }, { text: "Hello World" }, function (d) {
              console.log(d);
          }, function (d) {
              console.log(d);//这里的是随便写的地址,因此执行了error里的函数,可打印看参数及结果
          });
          myResource.remove({ text: "Hello World" }, { text: "Hello World" }, function (d) {
              console.log(d);
          }, function (d) {
              console.log(d);//这里的是随便写的地址,因此执行了error里的函数,可打印看参数及结果
          });
          myResource.delete({ text: "Hello World" }, { text: "Hello World" }, function (d) {
              console.log(d);
          }, function (d) {
              console.log(d);//这里的是随便写的地址,因此执行了error里的函数,可打印看参数及结果
          });
          var newResource = new myResource();
          newResource.$save({ id: "2" }, function (d) {
              console.log(d);
          }, function (d) {
              console.log(d);//这里的是随便写的地址,因此执行了error里的函数,可打印看参数及结果
          });
          newResource.$remove({ id: "3" }, function (d) {
              console.log(d);
          }, function (d) {
              console.log(d);//这里的是随便写的地址,因此执行了error里的函数,可打印看参数及结果
          });
          myResource.myPost();
      };
  }());

关于$resource,这里只是简单的介绍和使用,本兽对$resource的理解也不会很深(不多用到restful),但愿有人交流相关问题。关于RESTFUL的,详情请戳大神阮一峰的文章:http://www.ruanyifeng.com/blog/2011/09/restful

相关文章
相关标签/搜索