ngResource和REST介绍
ngResource和REST介绍
一、RESTful介绍

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,比如:http://example.com/resources/。
- 传输的资源: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上。http://angularjsblog.duapp.com/ 后端是Node.js编写。
三、参考资料
ngResource和REST介绍的更多相关文章
- Angular企业级开发(4)-ngResource和REST介绍
		一.RESTful介绍 RESTful维基百科 REST(表征性状态传输,Representational State Transfer)是Roy Fielding博士在2000年他的博士论文中提出来 ... 
- angular学习笔记(二十七)-$http(5)-使用$http构建RESTful架构
		在angular中有一个特别为RESTful架构而定制的服务,是在$http的基础上进行了封装. 但是为了学习,我们先看看用直接$http是如何构建RESTful架构的: 假设有一个银行卡的列表.需要 ... 
- CSS3 background-image背景图片相关介绍
		这里将会介绍如何通过background-image设置背景图片,以及背景图片的平铺.拉伸.偏移.设置大小等操作. 1. 背景图片样式分类 CSS中设置元素背景图片及其背景图片样式的属性主要以下几个: ... 
- MySQL高级知识- MySQL的架构介绍
		[TOC] 1.MySQL 简介 概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而 ... 
- Windows Server 2012 NIC Teaming介绍及注意事项
		Windows Server 2012 NIC Teaming介绍及注意事项 转载自:http://www.it165.net/os/html/201303/4799.html Windows Ser ... 
- Linux下服务器端开发流程及相关工具介绍(C++)
		去年刚毕业来公司后,做为新人,发现很多东西都没有文档,各种工具和地址都是口口相传的,而且很多时候都是不知道有哪些工具可以使用,所以当时就想把自己接触到的这些东西记录下来,为后来者提供参考,相当于一个路 ... 
- JavaScript var关键字、变量的状态、异常处理、命名规范等介绍
		本篇主要介绍var关键字.变量的undefined和null状态.异常处理.命名规范. 目录 1. var 关键字:介绍var关键字的使用. 2. 变量的状态:介绍变量的未定义.已定义未赋值.已定义已 ... 
- HTML DOM 介绍
		本篇主要介绍DOM内容.DOM 节点.节点属性以及获取HTML元素的方法. 目录 1. 介绍 DOM:介绍DOM,以及对DOM分类和功能的说明. 2. DOM 节点:介绍DOM节点分类和节点层次. 3 ... 
- HTML 事件(一) 事件的介绍
		本篇主要介绍HTML中的事件知识:事件相关术语.DOM事件规范.事件对象. 其他事件文章 1. HTML 事件(一) 事件的介绍 2. HTML 事件(二) 事件的注册与注销 3. HTML 事件(三 ... 
随机推荐
- Oracle 查看正在执行的SQL语句
			SELECT A.MACHINE, username,a.SID,a.SERIAL#, sql_text,LOGON_TIME from v$session a, v$sql b where a.sq ... 
- 【BZOJ】1002:轮状病毒(基尔霍夫矩阵【附公式推导】或打表)
			Description 轮状病毒有很多变种,所有轮状病毒的变种都是从一个轮状基产生的.一个N轮状基由圆环上N个不同的基原子和圆心处一个核原子构成的,2个原子之间的边表示这2个原子之间的信息通道.如下图 ... 
- hdu5242 Game (贪心+dfs序)
			dfs序后用线段树来记每个节点的前缀和 每次找一个前缀和最大的节点,然后把它到根的路径上的每个之前没被走过的点 对应的dfs序的区间 减掉那个点的权值 每个点最多被减一次,复杂度是$O(nlogn)$ ... 
- 【bzoj3237】 Ahoi2013—连通图
			http://www.lydsy.com/JudgeOnline/problem.php?id=3237 (题目链接) 题意 给出一个无向图,$Q$组询问,每次询问将原图断掉$C$条边后是否还连通. ... 
- ASP.NET MVC学习之Log4Net配置(日志记录)
			Log4Net配置笔记---- 首先,添加对log4net.dll的引用. 在Web.config文件下的Configuration节点下添加Log4Net的配置信息: <!--Log4Net配 ... 
- Mac 删除应用卸载后无法正常移除的图标
			经常会不通过appstore下载软件,也就是从网页中下载dmg,自己安装,但是当我不再想要这个软件,然后把它卸载掉之后就会发现,launchpad里还是遗留了这个软件的图标,而且删不掉.这个时候,就可 ... 
- webpack开发小总结
			webpack开发前端的时候往往是单独自己的服务器: 1.express 带上 webpack-dev-middleware(自己实现了热更新,而且在memory-fileSystem,不会产生多余文 ... 
- Codeforces 835E. The penguin's game
			http://codeforces.com/problemset/problem/835/E 题意: 这是一道交互题 有n个数,其中有2个y,n-2个x 每次你可以询问若干个数的异或和,从而得出y的位 ... 
- CSS function--(来自网易)
			/* function */ .f-cb:after,.f-cbli li:after{;overflow:hidden;content:".";} .f-cb,.f-cbli l ... 
- 通过vnc访问无显卡服务器的图形环境
			最近在一台没有显卡的 Power 服务器上,安装了Fedora 22,因为没有显卡,所以不能在本机启动Xserver,于是想通过vnc的方式远程访问服务器的图形环境. 在服务器上安装好xserver和 ... 
