Restangular是一种AngularJS服务,可以使用最少的客户端代码简化常见的GET,POST,DELETE和UPDATE请求。它适用于任何从RESTful API中获取数据的WebApp。

可以从bower和npm包管理器中获取restangular,初次尝试也可以使用cdn

<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/restangular/1.5.1/restangular.js"></script>
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/restangular/1.5.1/restangular.min.js"></script>

第一种是未压缩版,第二种是压缩版,相比前者压缩版体积更小。

// Add Restangular as a dependency to your app
angular.module('your-app', ['restangular']);// Inject Restangular into your controller
angular.module('your-app').controller('MainCtrl', function($scope, Restangular) {  // ...});

这里演示了如何加载restangular。

注入rest的时候要用小写,作为依赖的时候要大写,不然会报错。

// First way of creating a Restangular object. Just saying the base URL
var baseAccounts = Restangular.all('accounts');// This will query /accounts and return a promise.
baseAccounts.getList().then(function(accounts) {  
    $scope.allAccounts = accounts;
});

第一行代码声明了基础的路由地址,.getList()用于通过路由/accounts发起一次查询请求。


var newAccount = {name: "Gonto's account"};// POST /accounts
baseAccounts.post(newAccount);

向/accounts地址发送post请求,发送的数据为newAccount对象


// Just ONE GET to /accounts/123/buildings/456
Restangular.one('accounts', 123).one('buildings', 456).get()

one方法为向URL中追加参数,第一个参数是参数名,第二个是参数值,最终的get()决定了请求为get方式还是post方式。

当然one方法也可以不带参数名,比如像我项目中就有这么一行代码

function delete(id){
    Restangular.all('service').one(id).remove();
}

这里请求为delete,向service发送删除请求,删除的id为XXX,最终形成的路由为

/service/`id`

暂时常用的是这些,如果有其他方式会另行补充。