博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Angular企业级开发(4)-ngResource和REST介绍
阅读量:6157 次
发布时间:2019-06-21

本文共 3702 字,大约阅读时间需要 12 分钟。

一、RESTful介绍

59618-20161117204033092-1978949621.jpg

REST(表征性状态传输,Representational State Transfer)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。RESTful风格的设计不仅具有更好的可读性(Human Readable),而且易于做缓存以及服务器扩展(scalability)。REST风格体现在URL设计上:

  • 每个URL对应一个资源
  • 对资源的不同操作对应于HTTP的不同方法
  • 资源表现形式(representation)通过Accept和Content-Type指定

符合REST设计风格的Web API称为RESTful API。它从以下三个方面资源进行定义:

  • 直观简短的资源地址:URI,比如:。
  • 传输的资源:Web服务接受与返回的互联网媒体类型,比如:JSON,XML,YAML等。
  • 对资源的操作:Web服务在该资源上所支持的一系列请求方法(比如:POST,GET,PUT或DELETE)。

二、$resource介绍和使用

A factory which creates a resource object that lets you interact with RESTful server-side data sources.

$resource服务主要用来处理使用RESTful编写后台的接口进行数据交互。

  • high level: $resource service
  • low level:$http service

语法格式:

$resource(url, [paramDefaults], [actions], options);

$resource()根据actions对象的不同,默认一共有提供一下5个方法,开发者可以进行重名覆盖:

{    "get": {        "method": "GET"    }, //一般用于获取某个资源    "query": {        "method": "GET",        "isArray": true    }, //一般用于获取资源列表,以数组形式返回    "save": {        "method": "POST"    }, //一般用于保存某个资源,有可能是新建的资源,也有可能是更新现有的资源    "remove": {        "method": "DELETE"    } //一般用于删除某个资源delete: {"method": 'DELETE'}一般用于删除某个资源}

demo:

为资源建立一个Factory:

var blogModule = angular.module('blogModule', ['ngResource']);blogModule.factory('BlogResource', ['$resource',    function ($resource) {        return $resource(serverUrl + "/api/blog/:id", {}, {            get: { method: 'GET', cache: false, isArray: false },            save: { method: 'POST', cache: false, isArray: false },            update: { method: 'PUT', cache: false, isArray: false },            delete: { method: 'DELETE', cache: false, isArray: false }        });    }]);

CRUD操作

blogModule.controller('BlogListCtrl', ['$scope', 'BlogResource',    function($scope, BlogResource) {        BlogResource.get({}, function (response) {            $scope.blogList = response;        }, function (error) {            console.log("Error:" + JSON.stringify(error));        });        //返回数据                // $scope.blogList = [        //     {        //         "id": 1,        //         "date": 1400623623107,        //         "introText": "This is a blog post about AngularJS. We will cover how to build",        //         "blogText": "This is a blog post about AngularJS. We will cover how to build a blog and how to add comments to the blog post."        //     },        //     {        //         "id": 2,        //         "date": 1400267723107,        //         "introText": "In this blog post we will learn how to build applications based on REST",        //         "blogText": "In this blog post we will learn how to build applications based on REST web services that contain most of the business logic needed for the application."        //     }        // ];    }]);
blogModule.controller('BlogDetailCtrl', ['$scope', '$routeParams', 'BlogResource',    function($scope, $routeParams, BlogResource) {        var blogId = $routeParams.id;          BlogResource.get({ id: blogId }, function (response) {            $scope.blogEntry = response;        }, function (error) {            console.log("Error:" + JSON.stringify(error));        });    }]);

新建博客

//新建博客控制器blogModule.controller('NewBlogPostCtrl', ['$scope', '$routeParams', 'BlogResource', function ($scope, $routeParams, BlogResource) {    $scope.submit=function(){        var postData={            "introText":$scope.introText,            "blogText":$scope.blogText,            "languageId":1        };        var blogId=Date.now();        BlogResource.save({ id: blogId },postData,function(response){            console.log("Success:"+JSON.stringify(response));        },function(errorResponse){            console.log("Error:"+JSON.stringify(errorResponse));        });    }}]);

ps:前后端代码都写好之后,上传到Github上。 后端是Node.js编写。

三、参考资料

转载地址:http://kxifa.baihongyu.com/

你可能感兴趣的文章
常用限制input的方法
查看>>
IIS7下使用urlrewriter.dll配置
查看>>
并行程序设计学习心得1——并行计算机存储
查看>>
bulk
查看>>
C++ 迭代器运算
查看>>
【支持iOS11】UITableView左滑删除自定义 - 实现多选项并使用自定义图片
查看>>
【算法笔记】多线程斐波那契数列
查看>>
java8函数式编程实例
查看>>
jqgrid滚动条宽度/列显示不全问题
查看>>
在mac OS10.10下安装 cocoapods遇到的一些问题
查看>>
css技巧
查看>>
Tyvj 1728 普通平衡树
查看>>
javascript性能优化
查看>>
多路归并排序之败者树
查看>>
java连接MySql数据库
查看>>
转:Vue keep-alive实践总结
查看>>
深入python的set和dict
查看>>
C++ 11 lambda
查看>>
Android JSON数据解析
查看>>
DEV实现日期时间效果
查看>>