`
cvu
  • 浏览: 108322 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

REST的意义在于:

阅读更多
刚才回了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语言。
分享到:
评论
9 楼 fixopen 2006-12-18  
引用
如果能够套用CRUD,那么REST就是既能提供数据(或者用REST的术语:resource)又能提供页面。


页面和数据有什么无法跨越的鸿沟?页面不就是为了把数据向人展现的一个数据的视图?为什么能提供数据就不能提供页面?我怎么总觉得有了数据,你愿意提供页面不愿意提供页面都只是一个无关宏旨的细节性的决策而已呢?
8 楼 fixopen 2006-12-18  
REST跟MVC!?哪儿跟哪儿啊。
REST是为了提供大规模并行而提出的一种设置准则,其基本特征就是把资源(常量性质的和幂等性质的)不断的cache形成体系。为了做到这一点,把变动的放到最终的客户端而已。这个跟MVC有什么关系呢?
对于资源的操作,我们抽象出CRUD,正好可以用HTTP的PUT GET POST DELETE来对应,而这些操作原语本质上跟REST没有什么关系,虽然REST几乎是完全倾向于如此。
我觉得现在的问题是:URI(或者IRI)表达资源仍然没有考虑清楚,尤其是Ajax风格开始流行以后,mashup要求我们不仅仅用URI表达我所获得的整个资源,而要用URI表达组成整个资源的各个部分资源,它们或许来自不同的地方。但是我们的WebClient仍然只能为一个整体资源指定一个URI。
扯远了……
7 楼 billgui 2006-12-17  
希望以后有个实际一点的例子来讨论,这样一来比较容易理解,二来也容易发现问题。
6 楼 robbin 2006-12-17  
对于REST的实际意义,我是这样认为的:

1、克服了MVC框架中Action/View代码膨胀过多的问题
2、解决了Web层代码重用的问题(MVC无法重用,而组件框架JSF/Tapestry粒度太大)

5 楼 billgui 2006-12-16  
我怎么感觉REST相当于把数据库暴露出来,当然具有很大的灵活性了。但是代价是,把编程任务从server端转嫁到调用者那里去了,总的工作量并未减少,好处是灵活性。这种讲法不知各位如何看法?
4 楼 cvu 2006-12-16  
axgle 写道
REST是不是MVC三部分去掉了View?
REST=M+C,这样认为是否正确呢?


我理解的REST是:M+C for resource,M+C+V for display,而REST把for resource的MC和for display的MC整合起来了。
3 楼 cvu 2006-12-16  
charon 写道

如果顺着这个往下扯,就又到了语义web那一套去了。在动词方面,REST充其量规范了粗粒度的完备动作集合中各元素的语义,但也仅仅是粗粒度的,否则,光update一块,就可以细分出无数的差异动作来.
而要实现"整个internet就是一个巨大的类库",至少还需要对名词(数量海了去了)的语义做一个标准才行。


我理解语义网的目的是让计算机懂得更多,施惠于用户。而所谓internet类库,是让程序员获得更多资源,施惠于开发者。

粗粒度对的,但是有了它就能做不少事情了,细粒度的动作不就是各个resource的update组合起来吗?
2 楼 charon 2006-12-16  
cvu 写道

设想REST流行起来,新网站都缺省地提供符合REST标准的API,整个internet就是一个巨大的类库,这才是真正的webOS。这才是REST的魅力所在,是激动人心的地方,不是仅仅为了某单个项目的优化。


如果顺着这个往下扯,就又到了语义web那一套去了。在动词方面,REST充其量规范了粗粒度的完备动作集合中各元素的语义,但也仅仅是粗粒度的,否则,光update一块,就可以细分出无数的差异动作来.
而要实现"整个internet就是一个巨大的类库",至少还需要对名词(数量海了去了)的语义做一个标准才行。
1 楼 axgle 2006-12-16  
引用
我总觉得REST应该用于提供数据而不是页面

REST是不是MVC三部分去掉了View?
REST=M+C,这样认为是否正确呢?

相关推荐

    profiles-rest-api:概要文件REST API的源代码

    首先,"profiles-rest-api"项目的核心在于提供一个用于创建、读取、更新和删除(CRUD)个人档案的接口。REST API的设计原则包括资源定位、无状态性、缓存机制以及使用HTTP方法来表示操作。在这个项目中,我们将看到...

    白话REST-识别真假REST

    REST的核心理念在于资源的抽象、统一的接口以及状态的无状态传输。其中,“资源”指的是通过网络可识别和访问的任何信息实体,它可以是文本、图片、数据或服务。而“表述”则是资源的某种表现形式,如HTML、JSON、...

    agora-rest-api:用于可持续性免费和销售应用程序的后端 api。 Django REST api 项目格式

    为了提供健壮的服务,Agora REST API会包含适当的错误处理机制,向客户端返回有意义的错误信息。同时,利用Django的测试框架,开发者可以编写单元测试和集成测试,确保API的功能正确无误。 8. **持续集成与部署**...

    REST WCF service

    学习和理解RESTful WCF服务的关键在于掌握REST的原则,理解HTTP方法的意义,以及如何有效利用WCF的特性和Entity Framework的功能。这将有助于开发者创建高效、可维护的Web服务,便于与其他系统集成,提高应用程序的...

    设计 REST 风格的 MVC 框架

    在设计REST风格的MVC框架时,关键在于如何将URL直接映射到具体的控制器方法上,而不是像传统框架那样映射到整个控制器类。这要求框架具备解析URL的能力,以及动态调用相应方法的机制。例如,在WebWind框架中,一个...

    REST Service 的最佳实践

    REST服务的核心在于其遵循的一组架构约束条件,这些约束条件确保了REST服务的轻量级、无状态和可缓存性。主要包含以下几个方面: 1. **资源导向(Resource-Oriented)**:REST服务围绕资源进行设计,每个资源都有一...

    KEPServerEX设置_loT Gateway 调用MES的web接口服务配置方法.docx

    - 在Client设置中,选择格式,如Narrow或Wide,两者主要在于是否启用缓存,实际效果可能根据具体应用场景有所不同。 - Header设置用于定义请求头信息,如认证令牌或自定义头字段。 2. **创建REST客户端**: - ...

    REST服务接口文档[借鉴].pdf

    REST的优势在于其无状态、缓存、层叠和代码分离等特性,使得服务具有更好的可伸缩性和性能。同时,REST接口易于理解和实现,支持多种客户端平台,包括Java、.NET、Python、JavaScript等。 2. 我的链接服务列表 在该...

    Riddles-Scraper:REST API会产生随机的谜语。 使用Node.js构建

    Node.js的优势在于其非阻塞I/O模型和事件驱动,使得它在处理大量并发请求时表现出色。 2. **RESTful API设计原则** - **统一接口**:API应具有统一的资源表示方式,通常使用HTTP动词(GET, POST, PUT, DELETE)来...

    人工智人-家居设计-基于REST的智能水表系统内部通信接口设计与开发.pdf

    《基于REST的智能水表系统内部通信接口设计与开发》这篇硕士论文主要...这篇论文的贡献在于,它提供了一种适用于智能家居领域的高效通信接口设计方案,对于提升智能水表系统的运行效率和管理效能具有重要的实践意义。

    Python在线考试系统后端-大学毕业设计-基于Django+Django -Rest-Framework.zip

    在当今数字化教育的时代,构建一套在线考试系统对于教学与学习都具有重要的意义。本项目以"Python在线考试系统后端"为主题,结合Django和Django Rest-Framework两大Python Web开发框架,为大学毕业生和课程设计者...

    SuperMap iMolile 8C for Android下载iserver发布的rest地图服务里某些特定的要素到本地数据集

    总结来说,SuperMap iMobile 8C for Android通过与iServer的REST服务集成,实现了对特定地理要素的筛选和下载,将云服务中的数据便捷地引入到本地环境,这对于离线工作、数据备份和定制化应用开发具有重要意义。...

    毕设&课程作业_基于RestOn智能睡眠监测器的睡眠监护系统.zip

    "毕设&课程作业_基于RestOn智能睡眠监测器的睡眠监护系统.zip" 这个标题揭示了这是一个与计算机科学相关的毕业设计或课程作业项目,重点在于开发一个睡眠监护系统。该系统是基于RestOn智能睡眠监测器,这表明它可能...

    数据清理的艺术:如何在 Elasticsearch 中删除文档

    Elasticsearch的强大之处不仅在于它的搜索能力,还在于其灵活的数据管理机制。通过掌握如何在Elasticsearch中有效地删除文档,可以帮助我们更好地维护索引的健康状态,提升数据质量和系统性能。无论是对于个人开发者...

    高考英语独立主格结构.docx

    独立主格结构与分词短语都能转化为状语从句,但区别在于: 1. 独立主格结构的逻辑主语与主句主语不同,如 "If time permits, we’d better have a rest this weekend." 转换为 "Time permitting, we’d better have ...

    一个基于Android平台的学习系统.pdf

    外观模式的作用在于简化复杂系统的接口,减少客户程序与子系统间的依赖。 6. 系统执行流程: 客户端的Android应用程序利用ConnectionManager类来管理和调用Web服务,通过CourseDAO类来获取Moodle数据库中的数据。...

    cocaine-core-0.11.0.0.zip

    《开源项目:Indicative-Java - 构建REST API的Java客户端》 在IT行业中,开源项目一直是...开源项目的价值在于共享和学习,因此,无论是初学者还是经验丰富的开发者,都有机会从"Indicative-Java"中收获宝贵的知识。

    在原开源代码基础上更新了jni相关代码

    从标签"rest_rpc"来看,这可能意味着项目的重点在于RESTful API和RPC(远程过程调用)的实现。更新JNI代码可能与优化跨进程通信有关,例如通过JNI调用本地库来提高RPC服务的性能或可靠性。这可能涉及到网络通信的...

    2016届中考英语语法整合复习第2课时冠词牛津版

    在2016年的中考英语语法复习中,冠词的考察重点在于不定冠词、定冠词及零冠词的用法,以选择题为主要题型。 **不定冠词的用法:** 1. **表示种类**:不定冠词用于可数名词单数前,表明某一类人或事物,如:“She is...

Global site tag (gtag.js) - Google Analytics