1.Restangular依賴Lo-Dash或Underscore,因此為了確保Restangular可以正常運行,需要引入這兩個庫中的一個。
<script type="text/javascript" src="js/angular.js"></script> <script type="text/javascript" src="js/lodash.js"></script> <script type="text/javascript" src="js/restangular.js"></script>
2.項目中用Restangular:
var app=angular.module("myApp",["restangular"]);//此處的restangular首字母必須小寫,否則報錯 app.controller("myCtrl",function($scope,Restangular){}//此處的restangular首字母必須大寫,否則報錯
3.Restangular的方法測試
前端請求頁面
app.controller("myCtrl",function($scope,Restangular){ //get請求 Restangular.all("get").get({}).then(function(data){ console.log(JSON.stringify(data));//[{"name":"張飛111"},{"name":"關羽111"}] }) Restangular.all("get",147).get({}).then(function(data){ console.log(JSON.stringify(data));//[{"name":"張飛111"},{"name":"關羽111"}] }) Restangular.one("get",123).get({}).then(function(data){ console.log(JSON.stringify(data));//[{"name":"劉備"},{"name":"曹操"}] }) //post請求 Restangular.all("post").post().then(function(data){ console.log(JSON.stringify(data));//[{"age":"27"}] }) Restangular.one("post",456).post().then(function(data){ console.log(JSON.stringify(data));//[{"age":"29"}] }) })
后端處理請求頁面
router.get('/get', function(req, res, next) {
console.log(req.query);//獲取直接get方式附在url?之后key=value形式的參數 xxx.xx?y=x res.send('[{"name":"張飛111"},{"name":"關羽111"}]'); }); router.get('/get/147', function(req, res, next) { res.send('[{"name":"張飛147"},{"name":"關羽147"}]'); }); router.get('/get/123', function(req, res, next) { res.send('[{"name":"劉備"},{"name":"曹操"}]'); }); router.post('/post', function(req, res, next) { res.send('[{"age":"27"}]'); }); router.post('/post/456', function(req, res, next) { res.send('[{"age":"29"}]'); });
打印結果:
總結:
①、Restangular的All方法會讓所有的HTTP請求將首個字符串作為路徑來請求數據,第二個字符串將不起作用。例如Restangular.all("get",147)請求路徑實際還是'/get'
②、Restangular的One方法通過單個對象來發送嵌套的請求,路徑按參數順序用"/"分隔,例如Restangular.one("get",123)請求路徑就是'/get/123'
③、Restangular是get請求還是post請求與all或one方法無關,與all或one方法后的get或post方法有關。
④、Restangular.all("get").get("")就是get請求,get方法內傳的是請求的對象,對應的是url?后的參數值,如{"name":"lily"}則表示get請求的url為xxx?name=lily,如果是空對象,就表示不傳參,如果不傳對象,傳字符串,Restangular會自動分隔解析成對象的形式。例如get("555"),會被解析成{"0":5,"1":5,"2":5}。如果不傳參數,也會被解析成傳的空對象。
⑤、Restangular.all("post").post()是post請求。