rails 框架符合MVC设计模式
一,使用rails new 工程名 创建工程
应用添加功能,需要添加一个控制器来接收用户的请求
在工程目录下,使用generate 创建
创建控制器:
rails generate controller welcome
用来在页面上向用户显示欢迎信息,发现自动生成了welcome控制器,和对应的视图文件夹welcome
如果不想要这个控制器与之所有相关的文件,使用rails destroy controller welcome
控制器中真正处理请求的不是控制器本身,而是action动作.下一步创建动作
rails的generate命令允许在创建控制器的时候也顺便同时生成需要的action
rails generate controller welcome first second
只要请求发送到了某一个action上,rails就会将对应的子视图进行显示,不需要其他处理.
当welcome接受了用户的请求,就是在访问首页的时候发送请求,让他调用welcome下面的first action,此时welcome接收了请求,并调用first action这个函数,
因为rails将对应的action和子视图联系起来了,所以将请求发送给了对应的first子视图,将子视图中的内容显示到了屏幕上,完成了这个请求.
控制器接收请求,调用action处理请求,最后显示于对应的view显示内容.
rails框架中的请求是什么?
为什么rails能够接收并识别一个请求的内容并能够对其进行相应的处理
这种请求有哪些类型,工作方式是怎样的?
rails 资源 重点
rest restful应用程序
web应用的本质:用户client和服务server的交互过程:
而rest就是用来描述用户client和服务server的交互方式的.
mvc 用来定义用户和server的结构,而rest用来定义交互方式
rest是资源的表现层状态转化. 资源,表现层,状态转化
资源是网络上的一种具体信息,只要能够让用户获取的信息,比如博客
所谓表现层可以理解为用户和服务器交互过程中,服务器返回信息的方式.比如用户要看博客列表的第一页,web应用返回了博客列表的第一页,比如txt格式,xml格式
当你看完第一页,想看第二页时, rest是无状态服务,不记录当前的位置.不知道当前是第几页.
如果我想看第二页,那么每次都需要精确的获取到服务器的位置,只有这样,才能把需要的内容返回给用户,
即用户想要操作服务器,就必须通过定位服务器的资源的方式,再加上某种手段,让服务器的状态发生转换,这种转化建立在表现层的基础上,所以称之为表现层的状态转化.
那么在REST中,是如何实现这些的呢?
使用url定位资源
使用http动作描述操作
注意:url和http分别是什么?
什么叫做url资源定位:
一条url路径必须完整包含获取资源的位置.
当url定位了需要操作的资源,还需要标明操作的方式,获取,修改,删除还是更新,就需要http动作描述(请求的方式:get,post,delete.update等等)
在访问资源位置的同时,在http请求中标明操作资源的方式,服务器收到这个信息后,就完整的知道了你请求的内容,就返回给相应的信息,完成请求.
因此,rest也就是用户和服务器交互的规范,交互语言.
REST将资源作为web应用的核心内容
看到url就知道服务器想访问什么
无状态的特性.保证了以免拥堵
当我们增加某种功能的时候,就去创建一个控制器去响应请求,或者需要添加一组资源的时候,就去创建一个控制器,
当我们需要添加一类功能或者需要添加一组资源的时候,就创建控制器,这就是为啥要创建控制器.
一个控制器往往对应一个功能.有了REST架构风格之后,一个控制器对应一组资源,同时对于同一种资源,不同的访问方式来使用不同的action,这样对于控制器action的命名以及功能的组织就很清晰.
资源的名称使用复数.
对于资料的访问,由http请求和url共同决定.
rails标准化了访问方式,默认的7种,
请求get
URL: /books 就是获取所有的内容,对应的action是index,可以理解为索引
请求:post
URL: /books 根目录, 对应的是create, 创建
.......
create和new区别:
create是创建新数据的函数,具体创建由他完成.
new 是显示新创建数据的页面,填写好之后发送给create进行创建
通过这个我们知道了rails框架中什么时候创建控制器,怎么命名控制器,控制什么东西,怎么命名. 遵循一些约定
下面创建博客weibo
rails new weibo --skip-bundle
bundle stall
创建需要的控制器及其相应动作
rails generate controller posts indexshow create new
创建晚控制器和action之后,还需要修改路由,访问对应的资源.
修改routes.rb
首页设计的是显示所有的微博,则需要将路由改成首页的action,
root 'post#index'
index是显示所有
启动rails s