刚才回了qiezi的一篇帖子,发现回到他的blog里去了,不如新开一篇:
引用
我总觉得REST应该用于提供数据而不是页面
如果能够套用CRUD,那么REST就是既能提供数据(或者用REST的术语:resource)又能提供页面。
GET /posts # list, for display only
GET /posts/new # new, for display only
GET /posts/1;edit # edit, for display only
POST /posts # update, for resource
GET /posts/1 # view, for both display and resource
PUT /posts/1 # update, for resource
DELETE /posts/1 # destroy,for resource
为什么CRUD好,除了可以理清思路,更是为了可以用REST标准来创建一套既能...又能...的机制。这样为你的网站/程序自动提供API了。
设想REST流行起来,新网站都缺省地提供符合REST标准的API,整个internet就是一个巨大的类库,这才是真正的webOS。这才是REST的魅力所在,是激动人心的地方,不是仅仅为了某单个项目的优化。
再引申以下:
web calendar,web office,web mail,web rss reader都有些很不错的小公司提供的服务,人气也不错,但是google开始做这些东西的时候,他们就消失了(或者被google收购了)。因为虽然功能有些差距,但google把他们集成了呀。集成的便利性很有诱惑力,所以那些focus的小公司就无以为继了。有人说google是下一个microsoft,只不过把东西都搬到网上去了,这个垄断的趋势已经有苗头了。但是如果那些service provider都用REST的标准,就像上面说的,internet就是一个巨大的类库(就像DHH的那个ppt的名字:world of resources),那么垄断就不那么容易了。我们程序员也能得到更大的自由,册那,那是多么大的自由啊。我还能记得当我学会用vba控制ms office的喜悦。我用更大的喜悦期盼着这个world of resources。
如果从这个角度来理解CRUD的意义,是不是就简单一些了?再读一下Nested Resource的描述和定义。然后闭上眼睛想一想MFC,MSO(office库)或者你用过的任何API,他们是不都是resource或者nested resource的crud啊?操作系统都是crud接口的,什么不能呢?也许,你的某一个应用crud的不顺,我也不鼓吹所有的都要crud。人家说crud很伟大,为什么?要从world of resource来理解。
顺便说一句,vba是ms最好的macro语言。无疑,ruby是internet最好的macro语言。
分享到:
- 2006-12-16 14:09
- 浏览 6384
- 评论(9)
- 论坛回复 / 浏览 (9 / 8884)
- 查看更多
相关推荐
首先,"profiles-rest-api"项目的核心在于提供一个用于创建、读取、更新和删除(CRUD)个人档案的接口。REST API的设计原则包括资源定位、无状态性、缓存机制以及使用HTTP方法来表示操作。在这个项目中,我们将看到...
REST的核心理念在于资源的抽象、统一的接口以及状态的无状态传输。其中,“资源”指的是通过网络可识别和访问的任何信息实体,它可以是文本、图片、数据或服务。而“表述”则是资源的某种表现形式,如HTML、JSON、...
为了提供健壮的服务,Agora REST API会包含适当的错误处理机制,向客户端返回有意义的错误信息。同时,利用Django的测试框架,开发者可以编写单元测试和集成测试,确保API的功能正确无误。 8. **持续集成与部署**...
学习和理解RESTful WCF服务的关键在于掌握REST的原则,理解HTTP方法的意义,以及如何有效利用WCF的特性和Entity Framework的功能。这将有助于开发者创建高效、可维护的Web服务,便于与其他系统集成,提高应用程序的...
在设计REST风格的MVC框架时,关键在于如何将URL直接映射到具体的控制器方法上,而不是像传统框架那样映射到整个控制器类。这要求框架具备解析URL的能力,以及动态调用相应方法的机制。例如,在WebWind框架中,一个...
REST服务的核心在于其遵循的一组架构约束条件,这些约束条件确保了REST服务的轻量级、无状态和可缓存性。主要包含以下几个方面: 1. **资源导向(Resource-Oriented)**:REST服务围绕资源进行设计,每个资源都有一...
- 在Client设置中,选择格式,如Narrow或Wide,两者主要在于是否启用缓存,实际效果可能根据具体应用场景有所不同。 - Header设置用于定义请求头信息,如认证令牌或自定义头字段。 2. **创建REST客户端**: - ...
REST的优势在于其无状态、缓存、层叠和代码分离等特性,使得服务具有更好的可伸缩性和性能。同时,REST接口易于理解和实现,支持多种客户端平台,包括Java、.NET、Python、JavaScript等。 2. 我的链接服务列表 在该...
Node.js的优势在于其非阻塞I/O模型和事件驱动,使得它在处理大量并发请求时表现出色。 2. **RESTful API设计原则** - **统一接口**:API应具有统一的资源表示方式,通常使用HTTP动词(GET, POST, PUT, DELETE)来...
《基于REST的智能水表系统内部通信接口设计与开发》这篇硕士论文主要...这篇论文的贡献在于,它提供了一种适用于智能家居领域的高效通信接口设计方案,对于提升智能水表系统的运行效率和管理效能具有重要的实践意义。
在当今数字化教育的时代,构建一套在线考试系统对于教学与学习都具有重要的意义。本项目以"Python在线考试系统后端"为主题,结合Django和Django Rest-Framework两大Python Web开发框架,为大学毕业生和课程设计者...
总结来说,SuperMap iMobile 8C for Android通过与iServer的REST服务集成,实现了对特定地理要素的筛选和下载,将云服务中的数据便捷地引入到本地环境,这对于离线工作、数据备份和定制化应用开发具有重要意义。...
"毕设&课程作业_基于RestOn智能睡眠监测器的睡眠监护系统.zip" 这个标题揭示了这是一个与计算机科学相关的毕业设计或课程作业项目,重点在于开发一个睡眠监护系统。该系统是基于RestOn智能睡眠监测器,这表明它可能...
Elasticsearch的强大之处不仅在于它的搜索能力,还在于其灵活的数据管理机制。通过掌握如何在Elasticsearch中有效地删除文档,可以帮助我们更好地维护索引的健康状态,提升数据质量和系统性能。无论是对于个人开发者...
独立主格结构与分词短语都能转化为状语从句,但区别在于: 1. 独立主格结构的逻辑主语与主句主语不同,如 "If time permits, we’d better have a rest this weekend." 转换为 "Time permitting, we’d better have ...
外观模式的作用在于简化复杂系统的接口,减少客户程序与子系统间的依赖。 6. 系统执行流程: 客户端的Android应用程序利用ConnectionManager类来管理和调用Web服务,通过CourseDAO类来获取Moodle数据库中的数据。...
《开源项目:Indicative-Java - 构建REST API的Java客户端》 在IT行业中,开源项目一直是...开源项目的价值在于共享和学习,因此,无论是初学者还是经验丰富的开发者,都有机会从"Indicative-Java"中收获宝贵的知识。
从标签"rest_rpc"来看,这可能意味着项目的重点在于RESTful API和RPC(远程过程调用)的实现。更新JNI代码可能与优化跨进程通信有关,例如通过JNI调用本地库来提高RPC服务的性能或可靠性。这可能涉及到网络通信的...
在2016年的中考英语语法复习中,冠词的考察重点在于不定冠词、定冠词及零冠词的用法,以选择题为主要题型。 **不定冠词的用法:** 1. **表示种类**:不定冠词用于可数名词单数前,表明某一类人或事物,如:“She is...