4

我是 ruby​​ on rails 的新手,试图了解 ruby​​ on rails web 应用程序中典型请求/响应生命周期的深入流程。

我已经用谷歌搜索了信息,但没有找到完整或详细的 DNS 服务器级别到调度程序的答案。

我得到的最接近的解释是: http ://brainspl.at/request_response.pdf 。

有人可以指出我更好或更详细的解释吗?

-拉维泰亚

4

4 回答 4

11

因此,您要求提供 Rails 请求/响应周期,并且您已经提到了一个真正很好地描述它的演示文稿。所以我假设你想从一个非常高的层次了解它,并且你完全需要这个概念来进行开发。然后就是这里了。我只是想按顺序命名这些部分。

  1. 路线:在这里,您将绘制世界将用来访问您的应用程序的路径。使用完整的 RESTful 架构,您需要定义资源的层次结构并定义如何访问资源以执行某些操作。如果对您的应用程序的任何请求与路由文件中的任何路径都不匹配,则不会对其进行处理。如果发生任何匹配,它将找到相应的控制器和动作并调用它。在调用的时候,它将所有请求相关的数据存储在paramshash中。
  2. 过滤器之前:现在您的应用程序已经知道哪个控制器#method 将处理请求。它会在调用该方法之前检查是否有任何配置要执行。这是通过使用before_filter. 如果找到任何东西,那么将首先调用这些函数。
  3. 方法执行:before_filter按特定顺序执行所有方法后,将调用实际方法。在此方法中,所有数据都以params散列形式提供。它处理输入数据,调用模型调用以访问数据库,并准备数据以供查看。
  4. 视图:将根据控制器#action、格式选择正确的视图文件。render :partial或者,您可以通过调用选择任何特定的视图来呈现。并且将使用控制器中准备的变量来准备响应。此响应将发送给客户端。
  5. 过滤器后:处理视图后,它会查找after_filter方法,如果找到,也会查找方法。

好吧,我会说这是一个快速概述,没有任何细节。我再说一遍,你提到的 pdf 确实包含更多细节。

如果您想更具体地了解任何事情,请告诉我。

于 2012-09-29T19:49:17.073 回答
3

用户打开他的浏览器,输入 URL,然后按 Enter。当用户按下 Enter 时,浏览器会请求该 URL。该请求到达 Rails 路由器 (config/routes.rb)。路由器将 URL 映射到正确的控制器和操作以处理请求。该操作接收请求,并要求模型从数据库中获取数据。模型将数据列表返回给控制器操作。控制器动作将数据传递给视图。视图将页面呈现为 HTML。控制器将 HTML 发送回浏览器。页面加载并且用户看到它。

https://www.codecademy.com/articles/request-response-cycle-dynamichttps://www.codecademy.com/articles/request-response-cycle-forms

于 2016-05-01T22:46:59.650 回答
1

当用户请求“url”时,一切都开始了。浏览器需要知道服务器的 IP 地址才能连接,因此它会查找 DNS(域名系统),将您的域转换为特定服务器的公共 IP 地址。然后浏览器将进行三次握手以连接端口 80 中的 puma 之类的服务器。并决定公钥和私钥是否会发生,因为如果 url 使用 HTTPS。HTTPS 是围绕 HTTP 和 TCP 的安全包装器。然后 Server 通过 rack 之类的中间件触发 rails 应用,向应用提供 request verb、header、body。然后 rails 应用程序使用 Journey(Rails 的默认路由库)来查找与请求匹配的同意控制器和操作,并使用请求和参数进行调用。

然后在此过程中将触发之前、之后、周围等 Rails 生命周期回调。该操作负责从模型请求数据并呈现请求的同意视图。最后将状态、标头和正文作为响应发回。

如果您想深入了解生命周期,请查看这篇文章请求的生命周期

于 2019-12-26T10:09:22.297 回答
0

还需要注意的是,Rails 应用程序使用MVC architectural pattern高级别的ModelViewController ,Rails 应用程序中请求的生命周期只是ModelViewController的交互。本文您提供概述。

于 2019-12-13T10:28:03.747 回答