`
whygod
  • 浏览: 1944 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

从实际经验说说使用REST的感受

阅读更多
1. REST号称减少action,每个controller的action规定在4个。但实际应用时,需要action的数量要大于这个数,这么说来,就要增加更多的controller。

2. 有别的方法可以让controller多处理几个action,例如在表单里设置个隐藏字段,那么POST以后根据隐藏字段的值进行不同的处理。或者说在routes里用with_options多设置几个独立的action。

3. REST生成地址的函数,new/edit/XXX_path(),大家在用的时候会不会想到将来也许为了优化而要将它们都改成<a href...>,你们会不会也觉得有点不爽。

4. respond输出的format.xml, format.js,在一般的web网站开发中,基本不会被用到。虽然它们确实有用,但我看着自己项目里这些鸡肋代码,也不知是删了好还是留着好。

5. 举个实际的例子来说明吧,开发bbs里帖子相关的功能,有新建,保存,修改,删除,但除此之外,我们还有开发预览帖子,引用,收藏,分享,支持或反对等等action。当这些功能处于一个大系统里,你是怎么分配controller和action的呢?

很多人都说正解是:该用REST的部分用REST,其它的就按一般的controller/action来就行了。
是的,要说功能,最终肯定能做出来,但你看到最后写的代码,似乎啥都不像。你也会觉得有些不爽的。

在此抛砖引玉,各位达人有其它好的方式,请多多指教~~
分享到:
评论
7 楼 whygod 2008-09-01  
手上项目原先是基于从Rails1.23的版本,后来迁移到Rails2.1,需要改动的地方挺多的。项目不大不小,也没有做EdgeRails。
............

7thbyte兄说得好,受教了!!
6 楼 冉翔 2008-08-29  
LZ明显还不清楚REST的含义,建议继续学习,弄明白后再谈实际经验和感受
5 楼 lgn21st 2008-08-29  
友情提示,Beast已经升格为altered Beast,地址在
http://github.com/technoweenie/altered_beast/tree/master
4 楼 dave liu 2008-08-29  
REST不是关键,关键是它能带来好处。
REST也可以有许多action,不是就那几个。它是种风格。
3 楼 foxgst 2008-08-27  
楼主好像不是很清楚如何在Rails中REST。

貌似Robbin很早以前就说过,要站在面向资源的角度来考虑问题。
2 楼 7thbyte 2008-08-26  
whygod 写道
1. REST号称减少action,每个controller的action规定在4个。但实际应用时,需要action的数量要大于这个数,这么说来,就要增加更多的controller。

2. 有别的方法可以让controller多处理几个action,例如在表单里设置个隐藏字段,那么POST以后根据隐藏字段的值进行不同的处理。或者说在routes里用with_options多设置几个独立的action。

3. REST生成地址的函数,new/edit/XXX_path(),大家在用的时候会不会想到将来也许为了优化而要将它们都改成<a href...>,你们会不会也觉得有点不爽。

4. respond输出的format.xml, format.js,在一般的web网站开发中,基本不会被用到。虽然它们确实有用,但我看着自己项目里这些鸡肋代码,也不知是删了好还是留着好。

5. 举个实际的例子来说明吧,开发bbs里帖子相关的功能,有新建,保存,修改,删除,但除此之外,我们还有开发预览帖子,引用,收藏,分享,支持或反对等等action。当这些功能处于一个大系统里,你是怎么分配controller和action的呢?

很多人都说正解是:该用REST的部分用REST,其它的就按一般的controller/action来就行了。
是的,要说功能,最终肯定能做出来,但你看到最后写的代码,似乎啥都不像。你也会觉得有些不爽的。

在此抛砖引玉,各位达人有其它好的方式,请多多指教~~


1、默认的是7个action : index show new edit create update destroy,如果不够用,有两种情况,一是确实不够,二是对REST理解不够,资源划分得还不够清楚

2、处理多个action干什么?为什么不把有差异的方法写在model上。。controller越薄越好

3、没明白什么意思,具体说说?

4、这根本不构成一个问题。。。不用脚手架就不会自动生成这些代码。用不到删掉就行了,为什么要考虑留不留的问题。。事实上我不赞成脚手架,因为生成的代码很不安全。如果不修改,可能会被其他人获得数据库表上所有字段的信息。

5、以这个例子来说,如果要表示分享,反对等,应该抽象出“分享ITEM”“意见”等资源,为什么要全部在帖子资源上进行这些操作?

/users/1/shareitems/new 不是更简单易懂?


还是大家多实践、探讨比较好:)
1 楼 robbin 2008-08-26  
建议你去下载beast的代码好好看看。REST不是你这么用的。

http://svn.techno-weenie.net/projects/beast/

相关推荐

    Androidannotation使用Rest注解(一)

    本篇文章将深入探讨如何使用AndroidAnnotation中的@Rest注解来实现与服务器的交互,以及如何结合用户登录验证功能。 首先,@Rest注解是AndroidAnnotation库中用于创建RESTful客户端的一个关键组件。通过这个注解,...

    REST实战(REST in Practice)

    - **Jim Webber**、**Savas Parastatidis** 和 **Ian Robinson**:这三位专家在本书中深入浅出地讲解了REST的实际应用案例,强调了如何利用REST来构建简单而优雅的分布式超媒体系统。 - **具体实践**:作者们通过...

    Kepware IOT gateway使用教程 - REST Sever

    其中,REST Server 模块是实现这一目标的关键组件,它提供了基于 RESTful API 的接口,使得应用程序能够轻松地从 KEPWARE 获取或写入数据。本教程将详细介绍如何在 KEPWARE 中配置和使用 REST Server。 首先,确保...

    Azure使用Rest访问存储服务的例子

    使用REST API访问Blob存储时,你需要进行以下步骤: - 发送HTTP请求:例如,上传Blob需要使用PUT请求,下载Blob则使用GET请求。 - 设置请求头:包括`Authorization`(授权信息)、`x-ms-date`(日期时间戳)、`...

    ArcGis Server10 java版Rest服务部署方法

    总的来说,ArcGIS Server 10 Java版的REST服务部署是一个包含安装、配置、发布和使用服务的过程。通过REST服务,开发者可以轻松地将GIS功能集成到各种Web和移动应用中,实现地理数据的共享和处理。提供的REST.war...

    REST 基础(三):使用 WSDL 2.0 描述 REST Web 服务

    在实际应用中,如果决定使用WSDL描述REST服务,需要注意以下几点: - **资源表示**:WSDL通常处理操作(operations),而REST关注资源(resources)。需要将资源映射到WSDL的操作。 - **HTTP方法**:REST使用HTTP...

    使用CXF发布Rest服务

    【标题】:使用CXF发布REST服务 在Java开发中,Apache CXF是一个广泛使用的开源框架,用于构建和部署Web服务。本教程将详细介绍如何利用CXF 2.3.3版本来发布RESTful服务,并在客户端进行调用。首先,我们需要理解...

    kettle rest 接口 请求实例

    当需要进行API调用时,Kettle作业或转换可以从这些位置读取并使用该token。为了保持安全性,应当确保存储token的地方受到适当的保护。 **批量和单个请求接口:** Kettle支持发送批量请求,这意味着可以一次性处理多...

    cpprest实例工程

    "HttpClientTest"可能是源代码文件,其中包含了实际的cpprest代码。在这个测试工程中,我们可能会看到如何创建`http_client`对象,设置请求头,指定请求路径,并发送请求。 4. **文件数据拉取**:cpprest库支持从...

    GlusterFS REST API server安装使用(centos7)

    详细的 REST API 使用文档可以在服务器上通过访问 `http://&lt;server_ip&gt;:8080/api/1.0/doc` 查看,这里的 `&lt;server_ip&gt;` 应替换为 GlusterFS REST API 服务器的实际 IP 地址。 总之,GlusterFS REST API Server 提供...

    REST参考技术文档

    综合这三份文档,我们可以系统地学习REST的基本理论,了解RESTful设计的最佳实践,并掌握将其应用于实际项目中的技巧。这些知识对于任何需要构建Web服务或者API的开发者来说都是至关重要的,无论是新手还是经验丰富...

    REST Server in Delphi XE Using DataSnap中文版

    无论是对于初学者还是有经验的开发者来说,这些知识都是非常宝贵的资源,不仅有助于理解 REST 架构的基本原理,还能掌握如何使用 Delphi XE 和 DataSnap 来高效地实现 REST 服务。此外,文章还介绍了如何利用 JSON ...

    REST_cn 中文版

    这篇论文定义了一个框架,致力于通过架构风格来...最后,我描述了从在超文本转移协议(HTTP)和统一资源标识符(URI)的标准中应用REST,以及从这两个标准在Web客户端和服务器软件的后续部署等过程中学到的经验教训。

    JIRA REST Java Client

    在实际开发中,使用JIRA REST Java Client时,还需要注意以下几点: - **版本兼容性**:确保所使用的JIRA REST Java Client版本与目标JIRA服务器的版本兼容,以避免出现不兼容的问题。 - **日志记录**:为了便于...

    dubbox 2.8.4 rest调用

    3. **REST接口实现**:在Java代码中,会看到使用dubbox提供的API实现的REST服务,这些服务通常继承自dubbox的抽象类或实现了特定的接口。 4. **客户端调用示例**:项目可能包含一个简单的客户端应用,演示如何通过...

    SSH+REST 最小版完整jar包,已验证,正常启动

    在实际使用中,可能还需要配置相关的设置,例如SSH连接的主机名、端口、用户名和密钥位置,以及REST API的端点和参数等。这个jar包对于那些需要快速搭建安全、可扩展的远程管理服务的开发者来说,是一个非常实用的...

    REST WebService简单应用

    4. 数据交换格式(Data Formats):REST服务通常使用JSON(JavaScript Object Notation)或XML(eXtensible Markup Language)作为数据交换格式,它们都易于解析和生成,并且广泛支持。 5. HATEOAS(Hypermedia as ...

    Django-REST-framework教程中文版

    本教程通过清晰的章节划分,逐步引导读者从零基础到能够熟练使用Django-REST-framework构建REST API。教程中的实例项目设置、序列化器编写、视图集使用等,都是在真实开发环境中会遇到的场景,非常具有参考价值。 ...

    geoserver-rest-python

    【标签】"geoserver rest python" 提示我们这个库的主要功能和所使用的语言。REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,通过HTTP协议操作资源。使用Python进行封装,使得...

Global site tag (gtag.js) - Google Analytics