【问题标题】:Output Raw HTTP Request without Sending in Ruby输出原始 HTTP 请求而不用 Ruby 发送
【发布时间】:2014-04-12 03:26:06
【问题描述】:

我正在尝试使用 ruby​​ 设置对休息 api 的 POST 请求。我想要做的是在不实际发送请求的情况下输出原始 HTTP 请求。我查看了 HTTParty 和 Net:HTTP,但似乎输出请求的唯一方法是只有在您发送请求后。所以基本上我想要一种方便的方法来创建一个 HTTP 请求字符串,而不必实际发送它。

【问题讨论】:

  • 如果您尝试将其用于测试第 3 方服务...并且您想模拟此请求(不将实际请求发送到第 3 方服务,但在本地生成此请求的响应) ...然后我敦促您检查github.com/bblimke/webmock

标签: ruby http httparty


【解决方案1】:

HTTParty.get 和类似的方法方法是包装了很多内部复杂性的辅助函数;你应该看看方法里面找到 HTTParty.get 在里面找到它只是makes a call to perform_request

def get(path, options={}, &block)
  perform_request Net::HTTP::Get, path, options, &block
end

查看perform_request,我们得到它只是constructs a Request object and call perform on it

def perform_request(http_method, path, options, &block) #:nodoc:
  options = default_options.merge(options)
  process_headers(options)
  process_cookies(options)
  Request.new(http_method, path, options).perform(&block)
end

你应该看看 Request 类。

【讨论】:

  • 感谢您的回答。已经尝试过了,但是在 Request 类内部,创建请求的方法是私有的(setup_raw_request)。我可以打开课程并更改某些内容,但这不是我正在寻找的理想优雅的解决方案。
【解决方案2】:

看看Typhoeus

request = Typhoeus::Request.new(
  "www.example.com",
  method: :post,
  body: "this is a request body",
  params: { field1: "a field" },
  headers: { Accept: "text/html" }
)

它允许您创建请求,然后您可以运行它或不运行它

 request.run

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 2011-05-26
    • 2016-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多