`
yangzhihuan
  • 浏览: 168516 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

RESTful&Rails学习笔记(二):资源的划分与命名

阅读更多

RESTful&Rails学习笔记(二)

 

REST风格web编程和传统web编程最大的不同就是HTTP方法的使用(这不是废话吗?地球人都知道啦)。

在rails里,资源对应到controller,就是说一个资源对应一个controller(心里YY一下:这样controller的数量岂不是会暴增?),如果你把资源都划分好的话,controller就只有index(GET),new(GET),edit(GET),create(POST),show(GET),update(PUT),destrory(DELETE)七个方法。

 

关键就在于资源的划分和命名(URI),就拿用户注册,登陆来说,用户是一个资源,注意了,用户登陆系统,也是一个资源,我把它称之为登陆状态,尽量用名词来表示资源,不管资源是一个对象还是一种动作,因为这涉及到Rails的资源URL生成规则。拿面向对象设计来举例子,一个对象可以是一个资源,但一个操作也可以是一个资源,这就是最重要的区别。比如:

  1. 传统的登陆,可能是这样的/users/login,对应UsersController#login方法,一般都是使用HTTP POST提交到服务器
  2. RESTful登陆,/login_states,对应LoginStates#create,同样是用HTTP POST方法,为什么对应create方法呢?我认为用户登陆将是新增一个用户的登陆状态,当然注销就是销毁一个用户登陆状态。
  3. 传统的注销,/users/logout,对应UsersController#logout,一般用的是HTTP GET方法
  4. RESTful注销,/login_states,使用HTTP DELETE方法提交,对应LoginStates#destrory方法

区别甚大。

简单讲就是:对象是资源,操作也是资源。

 

对于资源的命名,应该尽量使用名词来命名资源,比如上面的登陆应该叫做LoginStates(登陆状态),而不是叫做Login(登陆),为什么呢?因为Rails会自动生成一个资源URL的辅助方法,其中有些要特别注意的地方:

  1. login_states_path -> /login_states 如果是HTTP GET,对应index方法;如果是POST方法则对应create方法
  2. login_state_path(:id) -> /login_states/:id

请注意上面两个方法的区别 1 比 2 多了一个"s",因为Rails认为所有的资源,都是列表(list)和列表中的项(item),没有第三种了,所以Rails默认的资源辅助方法的生成跟它的这种约定有很大的关系,尽量使用名词命名资源将会减少你的麻烦。

(请参考RESTful Web Service 中文版 173页,有很详细的说明)

1
2
分享到:
评论

相关推荐

    RestFul_Rails_Dev_pdf_v_0.1.zip

    通过阅读这本书的翻译版,开发者不仅能学习到RESTful设计模式,还能掌握Rails框架下实现这些模式的具体方法和技术。无论是初学者还是经验丰富的Rails开发者,都能从中受益匪浅,提升自己的Web开发技能。

    Rails上的API:使用Rails构建REST APIAPIs on Rails: Building REST APIs with Rails

    3. **社区活跃**:Rails拥有庞大的开发者社区,提供了丰富的插件和教程资源,遇到问题时可以迅速获得帮助。 4. **安全性**:Rails内置了一系列安全措施,比如防止SQL注入、XSS攻击等,有助于保护应用免受常见威胁。 ...

    RESTful-Rails-Development:RESTful Rails 开发库

    RESTful-Rails-开发 RESTful Rails 开发库。 你好 Rails 类别图 API - WIKICAT 本地图片 带有地理标记的维基百科文章 - WIKIPINS 城市步道API 余烬漫步

    RESTful Rails Development

    - **1.10.1 公约**:Rails 的路由系统遵循约定优于配置的原则,这意味着许多常见的 URL 结构都可以通过简单的配置实现。 - **1.10.2 自定义**:当然,也可以通过 `routes.rb` 文件自定义更复杂的 URL 模式。 #### ...

    RestFul_Rails_Dev_v_0.1

    - **资源映射**:Rails 使用路由表将 HTTP 请求映射到相应的控制器和动作上。 - **控制器和模型**:控制器负责处理来自客户端的请求,并与模型层交互来执行业务逻辑。 - **视图**:视图负责渲染模型数据,通常为 ...

    RESTful.Rails.Development.2015.10.pdf

    根据提供的文件信息,我们可以推断出这是一本关于如何使用Ruby on Rails框架来构建RESTful应用程序和服务的专业书籍。书名为《RESTful Rails Development》,作者为Silvia Puglisi,出版时间为2015年10月。接下来,...

    thinkphp6 RESTful API开发

    thinkphp6 RESTful API开发 开发过程记录笔记 https://blog.csdn.net/weixin_41120504/article/details/115638094

    How to RESTful rails

    ### 资源重构:Rails中的RESTful实践 资源是RESTful架构的核心概念,它们通过统一的接口进行交互。在Rails中,对模型进行资源化是迈向RESTful的第一步。例如,一个博客应用可能有文章(Articles)、评论(Comments...

    Rails 101 入门电子书

    #### 二、作者介绍与背景 - **作者**: xdite,一位经验丰富的开发者,专注于Ruby on Rails框架。 - **作品**: 除了《Rails 101 入门电子书》外,xdite还编写了其他几本书籍,如《Maintainable Rails View》、《Lean...

    rails_rest_vote:RESTful投票宝典,用于Rails应用

    如果要构建公共API,则可能要启用跨域资源共享(CORS),以使跨域AJAX请求成为可能。 rack-cors宝石使这一过程变得非常简单。 只需将其粘贴在您的Gemfile中,如下所示: gem 'rack-cors' 然后在Rails应用程序的...

    RESTful API设计:URI设计与资源表示.docx

    RESTful API设计:URI设计与资源表示.docx

    restFul.Net

    Restful.NET是一个基于.NET框架实现RESTful架构风格的Web服务开发工具。REST(Representational State Transfer,表述性状态转移)是一种轻量级的、基于HTTP协议的软件架构风格,广泛应用于现代Web服务的设计中。...

    restful-rails-development:取自西尔维娅·普格里西(Silvia Puglisi)的同名书

    RESTful-铁路发展 示例代码取自Silvia Puglisi的《 》一书。 随着本书教程的进展,成功时我会更新每章的结果。 安装 $ git clone https://github.com/kgish/restful-rails-developmet.git book-rails4 $ cd book-...

    Ruby on Rails:RESTful设计原则.docx

    Ruby on Rails:RESTful设计原则.docx

    Qt+Cutelyst学习笔记(二十七)win10+Qt5.15.2+qmake实现一个简单的RESTful服务器 示例源码

    Qt+Cutelyst学习笔记(二十七)win10+Qt5.15.2+qmake实现一个简单的RESTful服务器 示例源码 https://blog.csdn.net/aggs1990/article/details/124115368 CSDN审核可能较慢,如无法下载,可以过段时间再回来看下

    restful_query:ActiveRecord扩展,用于通过静态方式查询数据

    restful_query 描述: RestfulQuery提供了一个RESTful接口,可轻松安全地查询ActiveRecord数据。用法: Rails / ActiveRecord: # as a gem, in environment.rbconfig . gem 'restful_query'或安装插件。 在您的模型...

    Ruby on Rails入门经典代码

    - MVC架构:Rails的核心设计模式,模型负责数据处理,视图负责展示,控制器协调两者。 - Routes:Rails的路由系统将HTTP请求映射到控制器的相应动作,定义了应用的URL结构。 - ActiveRecord:ORM(对象关系映射)...

    +restful学习教程

    #### 二、RESTful 的原则与特点 1. **无状态性**:每次请求必须包含理解该请求所需的所有信息。服务器不会保存客户端的状态。 2. **客户端-服务器模式**:将用户界面与数据存储分离,提高可维护性和灵活性。 3. **...

    Rails项目源代码

    `config/routes.rb`文件定义了所有路由规则,包括资源路由、命名路由和自定义路由。 6. **视图模板**: 视图使用ERB(Embedded Ruby)或更现代的Haml、Slim等模板语言,结合HTML来渲染用户界面。图片的展示、上传...

Global site tag (gtag.js) - Google Analytics