【问题标题】:Rails, how do you access the raw request data at the absolute lowest level?Rails,您如何在绝对最低级别访问原始请求数据?
【发布时间】:2011-12-07 21:20:03
【问题描述】:

Rails request 对象在请求生命周期中最早可用的时间是什么时候?本质上,请求何时首次作为请求对象可用,在哪个对象中? ActionDispatch?

你能访问来自Tester::Application的请求参数吗?如果是这样,怎么做?如果没有,那么使用环境呢?该信息何时设置?

【问题讨论】:

  • 您需要清理一下并澄清您的问题。您是否在询问如何在控制器操作期间访问所有请求参数?如果是这样,那就像在控制器操作中编写 puts request 并查看 rails 控制台一样简单。
  • 这有点含糊,但本质上,请求是什么时候第一次作为请求对象可用的,在哪个对象中?行动调度?等

标签: ruby-on-rails request lifecycle actiondispatch


【解决方案1】:

Rack 网络服务器创建 request 对象,然后 ActionDispatch 继承自它。所以本质上,您可以访问应用程序中间件中的Rack::RequestActionDispatch::Request 对象。

机架::请求

https://github.com/rack/rack/blob/master/lib/rack/request.rb

ActionDispatch::Request

https://github.com/rails/rails/blob/master/actionpack/lib/action_dispatch/http/request.rb

【讨论】:

  • 谢谢!这就是我一直在寻找的
【解决方案2】:

中间件可能是访问这些数据的最佳方式。我使用接受的答案中提到的类制作了一个简单的 gem,用于在 Rails 中设置原始 HTTP 请求/响应日志。

https://github.com/andrhamm/marcopolo

【讨论】:

  • 感谢您制作这个。这正是我需要从 api 服务中刮取令牌以便我可以使用 curl 来处理它。
  • @JacobDalton 没问题,请告诉我它是如何为您工作的,或者在 github 页面上打开一个问题以获取改进的想法
猜你喜欢
  • 2012-10-22
  • 2021-11-28
  • 2010-09-15
  • 1970-01-01
  • 2015-10-19
  • 2023-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多