Ext 3.0新增内容系列文章之一:Ext.data.Api快速一睹

为了确保开发者的DataProxy API使用无误,我们定义了Ext.data.Api单例管理这些数据的API。除了创、见、变、灭的这四种CRUD操作进行了定义之外,还分别将这些操作映射到了RESTful的HTTP方法:GET、POST、PUT和DELETE。

 

我们不妨打开源码看看。var validActions = {}就是保存“反转Ext.data.Api.actions的哈希表hash”,即value变为是key。本单例的一些方法(如getActions、getVerb)会以for (var verb in this.actions)的语句遍历这些actions,所以为了效率更快的话,访问过hash的会保存成为缓存,某些方法首先会检查hash命中匹配的值。需要注意的是,此hash运作过程中不断的读写、修改,因此我们不能够预定义这个hash。

 

属性actions指定了远程动作所关联的本地动作是哪些,如:

actions: {
create : 'create', // 表示位于服务端创建记录所执行的创建动作。Text representing the remote-action to create records on server.
read : 'read', // 表示位于服务端读取、加载数据所执行的创建动作。Text representing the remote-action to read/load data from server.
update : 'update', // 表示位于服务端更新记录所执行的创建动作。Text representing the remote-action to update records on server.
destroy : 'destroy' // 表示位于服务端消除记录所执行的创建动作。Text representing the remote-action to destroy records on server.
}

 

至于属性restActions ,就是将HTTP方法与关联的动作定义在一起的{CRUD action}:{HTTP method}的结对,将用于Ext.data.DataProxy.restful的时候。默认为:

 

restActions : {
create : 'POST',
read : 'GET',
update : 'PUT',
destroy : 'DELETE'
}

 

执行Ext.data.Api.isAction(action)方法,若传入的动作名称,在常量Ext.data.Api.actions中已经是有的就返回true。该方法的参数也可以是CRUD操作的数组。多次操作的时候传入数组的话会更快。

 

执行getVerb(name)返回实际的CRUD操作键值,根据传入的动作名称辨认出实际的"create", "read", "update" 或 "destroy"操作类型。一般来说该方法是内置使用的,不会直接地调用它。 Ext.data.Api.actions的key/value结对是相同无异的,但是也不一定的说。有需要的话,开发者可允许覆盖约定的名称。不过,框架内部依据KEY来调用方法的,因此就需要某种方式取得"create"、"read"、"update"和"destroy" 关键字才可以。如果发现KEYS已被缓存在validActions中,那么该就会直接从缓存中返回。

 

isValid()如果传入的API是有效的,就返回true;这样的话,同时检查到预定义没有的动作,就会传入到数组中,最后返回(错误的动作)。

 

hasUniqueUrl()使用的场合是, 在传入的proxy在一个原来唯一的proxy地址的时候,并没有其他API动作染指的时候,返回true。当决定是否插入“xaction”的HTTP参数到某个Ajax请求的时候,这个问题就显得重要了。 一般来说该方法是内置使用的,不会直接地调用它。

 

prepare(Ext.data.DataProxy)方法由Ext.data.DataProxy DataProxy内部使用,一般不宜直接使用。内部定义时,每个DataProxy API的动作可以是String或者是Object。当定义为Object的时候,就可以为其中的CRUD操作精确指定是哪一种HTTP方法(GET、POST…)。该方法会初始化传入的API,将每一项的操作转换为Object的形式。如果你传入的API没有设定HTTP方法的话,那么“method”所指定的配置项就是默认的方法。如果连method的配置项都没有指定的话,那么就是POST了。
new Ext.data.HttpProxy({
method: "POST", // 没有指定时默认的HTTP方法。
api: {
create: 'create.php',
load: 'read.php',
save: 'save.php',
destroy: 'destroy.php'
}
});

// 可选地,也可以对象形式定义。
new Ext.data.HttpProxy({
api: {
load: {url: 'read.php', method: 'GET'},
create: 'create.php',
destroy: 'destroy.php',
save: 'update.php'
}
});

通过执行restify(),可初始化Proxy,让其成为RESTful的。可根据restActions的值定义每个API动作的HTTP方法(GET, POST, PUT, DELETE的任意一种)。

 

最后Ext为我们提供了一个异常类Ext.data.Api.Error来任何异常的信息,向用户反馈问题的信息。

时间: 2024-10-23 10:52:18

Ext 3.0新增内容系列文章之一:Ext.data.Api快速一睹的相关文章

Ext 3.0新增内容系列文章之二:Ext.data.Writer简介

上期我们的内容是关于API接口的配置,其中涉及到CRUD只是略略一提,没有谈论太多,今期再重点说说. 根据CRUD 的原则,数据或资源操作不外乎"生.变.见.灭"的四大规律,也就是说,只需要"创建(Create ).获取(Read ).更新 (Update )和销毁(DELETE )"四种行为便可完成对资源的处理和操作了.如果"读"操作在Ext 中没有题的话,那么其他三种操作就应该归类为"写"的操作了.这部分的内容,在Ext

Ext 3.0新增内容系列文章之三:DWR的替代品Ext.Direct

上一期的内容谈了DataWriter,实质是与DataReader相对应的产物.今期咱们讲Ext.Direct的内容,无论DataWriter还是Ext.Direct我们都可以先检查一下官方所提供的例子,结合本文,加深理解.   Ext.Direct的目的在于提供一个无缝的通讯流(streamline)介乎于客户端和服务端之间,形成一种单一的接口,从而使得我们减少一些乏味的编码,例如数据的验证和出来返回的数据包(读数据.错误条件等等).Ext.direct命名空间下有若干的类是为了与服务端更密切

稳扎稳打Silverlight 3.0系列文章索引

相关文章:稳扎稳打Silverlight 2.0系列文章索引 在线DEMO http://www.cnblogs.com/webabcd/archive/2009/08/04/1538238.html 1.稳扎稳打Silverlight(33) - 3.0控件之AutoCompleteBox,DataPager 介绍 Silverlight 3.0 控件一览: AutoCompleteBox - 自动完成控件.当用户输入部分信息后,此控件可以基于指定的过滤算法在一个下拉框中陈列出匹配项 Data

IT软件人员的技术学习内容(写给技术迷茫中的你) - 项目管理系列文章

前面笔者曾经写过一篇关于IT从业者的职业道路文章(见笔者文:IT从业者的职业道路(从程序员到部门经理) - 项目管理系列文章).然后有读者提建议说写写技术方面的路线,所以就有了本文.本文从初学者到思想者的四步方面对IT从业者的技术路线做了阐述(见笔者文:IT从业者的学习规划 - 学习者系列文章开篇),从浅到深的对技术路线需要学习的内容做了叙述,后续会对学习者系列文章进行书写,本文就当做该系列文章的一个版图吧. 对于技术路线,笔者认为,在工作之余,就该自我主动的去学习技术和业务方面的知识.一方面是

Asp.net MVC2.0系列文章-显示列表和详细页面操作

上一篇文章,我们简单地完成了新闻的添加操作(Asp.net MVC2.0系列文章-添 加操作)此篇文章,我们使用Asp.net MVC2.0实现新闻清单的展示和新闻详细页面 . 创建View视图Index和NewsDetails 创建新闻首页,用来显示新闻列表. 在Views/News目录下,单击右键,选择Add->View,修改相关配置如下图所 示 在生成的HTML代码中,进行相关展示方面的修改.主要代码如下: <% foreach (var item in Model) { %> &

8、项目管理基本内容 - 项目管理系列文章

在前面的项目管理系列文章中,笔者已经对项目管理的项目组的相关管理内容做了介绍,从最基本的招聘,到相关的项目组管理方法等都有描述.今天本文就从项目组管理的基本内容出发,对项目的管理内容做个基本介绍. 一.项目业务文档编写: 项目文档是项目的最基本内容,其主要是根据项目经理与项目的业务需求人员进行沟通之后进行编写的内容,就是项目的业务文档,描述了项目的具体功能需求内容,也是项目进行开发的具体内容,项目组与业务人员进行沟通交流的基石.   二.项目的基本原型内容编写: 在进行了项目业务文档记录之后,如

Dreamweaver 4.0 新增功能全接触

dreamweaver MacroMedia公司在2000年11月13日发布了Dreamweaver 4.0,它的出现把Dreamweaver的竞争对手远远甩在了后面,稳坐可视化网页编辑软件的头把交椅,作为Dreamweaver 3.0 的升级产品Dreamweaver 4.0并没有质的飞跃,它基本保持了Dreamweaver3.0的界面风格,唯一不同的是多了几个浮动面板,要是不太细心的话还以为是Dreamweaver3.0,Dreamweaver4.0到底有什么新东东?让我来给您详细介绍Dre

Dreamweaver 4.0 新增功能全接触(图)

dreamweaver   MacroMedia公司在2000年11月13日发布了Dreamweaver4.0,它的出现把Dreamweaver的竞争对手远远甩在了后面,稳坐可视化网页编辑软件的头把交椅,作为Dreamweaver3.0的升级产品Dreamweaver4.0并没有质的飞跃,它基本保持了Dreamweaver3.0的界面风格,唯一不同的是多了几个浮动面板,要是不太细心的话还以为是Dreamweaver3.0,Dreamweaver4.0到底有什么新东东?让我来给您详细介绍Dream

DNN模块开发系列文章(6)——DNN中的通用控件(下)

TextEditor: 开发系列文章(6)--DNN中的通用控件(下)-通用语言模块">简介: 富文本编辑器控件.功能就不用多说了吧,大家都经常用到的.DNN利用Providers模式可以很方便的集成多种富文本编辑器.据我所知就有:FreeTextBox,FCKEditor,WebHtmlEditor,CuteEditor.大家可以通过配置web.config就可以很容易的选择使用一种了,具体的配置方法在每一个富文本编辑器Providers中应该都有详细的说明. 位置:controls\T