我是 ruby on rails 的新手,试图了解 ruby on rails web 应用程序中典型请求/响应生命周期的深入流程。
我已经用谷歌搜索了信息,但没有找到完整或详细的 DNS 服务器级别到调度程序的答案。
我得到的最接近的解释是: http ://brainspl.at/request_response.pdf 。
有人可以指出我更好或更详细的解释吗?
-拉维泰亚
我是 ruby on rails 的新手,试图了解 ruby on rails web 应用程序中典型请求/响应生命周期的深入流程。
我已经用谷歌搜索了信息,但没有找到完整或详细的 DNS 服务器级别到调度程序的答案。
我得到的最接近的解释是: http ://brainspl.at/request_response.pdf 。
有人可以指出我更好或更详细的解释吗?
-拉维泰亚
因此,您要求提供 Rails 请求/响应周期,并且您已经提到了一个真正很好地描述它的演示文稿。所以我假设你想从一个非常高的层次了解它,并且你完全需要这个概念来进行开发。然后就是这里了。我只是想按顺序命名这些部分。
params
hash中。before_filter
. 如果找到任何东西,那么将首先调用这些函数。before_filter
按特定顺序执行所有方法后,将调用实际方法。在此方法中,所有数据都以params
散列形式提供。它处理输入数据,调用模型调用以访问数据库,并准备数据以供查看。render :partial
或者,您可以通过调用选择任何特定的视图来呈现。并且将使用控制器中准备的变量来准备响应。此响应将发送给客户端。after_filter
方法,如果找到,也会查找方法。好吧,我会说这是一个快速概述,没有任何细节。我再说一遍,你提到的 pdf 确实包含更多细节。
如果您想更具体地了解任何事情,请告诉我。
用户打开他的浏览器,输入 URL,然后按 Enter。当用户按下 Enter 时,浏览器会请求该 URL。该请求到达 Rails 路由器 (config/routes.rb)。路由器将 URL 映射到正确的控制器和操作以处理请求。该操作接收请求,并要求模型从数据库中获取数据。模型将数据列表返回给控制器操作。控制器动作将数据传递给视图。视图将页面呈现为 HTML。控制器将 HTML 发送回浏览器。页面加载并且用户看到它。
https://www.codecademy.com/articles/request-response-cycle-dynamic 和https://www.codecademy.com/articles/request-response-cycle-forms
当用户请求“url”时,一切都开始了。浏览器需要知道服务器的 IP 地址才能连接,因此它会查找 DNS(域名系统),将您的域转换为特定服务器的公共 IP 地址。然后浏览器将进行三次握手以连接端口 80 中的 puma 之类的服务器。并决定公钥和私钥是否会发生,因为如果 url 使用 HTTPS。HTTPS 是围绕 HTTP 和 TCP 的安全包装器。然后 Server 通过 rack 之类的中间件触发 rails 应用,向应用提供 request verb、header、body。然后 rails 应用程序使用 Journey(Rails 的默认路由库)来查找与请求匹配的同意控制器和操作,并使用请求和参数进行调用。
然后在此过程中将触发之前、之后、周围等 Rails 生命周期回调。该操作负责从模型请求数据并呈现请求的同意视图。最后将状态、标头和正文作为响应发回。
如果您想深入了解生命周期,请查看这篇文章请求的生命周期
还需要注意的是,Rails 应用程序使用MVC architectural pattern
高级别的Model、View和Controller ,Rails 应用程序中请求的生命周期只是Model、View和Controller的交互。本文为您提供概述。