在不发送Ruby的情况下输出原始HTTP请求
我正在尝试使用ruby设置对RESTAPI的POST请求。我想做的是输出原始HTTP请求,而不实际发送请求。我已经研究了HTTParty和Net:HTTP,但输出请求的唯一方法似乎是只发送一次请求。因此,基本上我需要一种方便的方法来创建HTTP请求字符串,而无需实际发送它。HTTParty.get和类似的方法是包含大量内部复杂性的帮助函数;您只需查看方法内部即可找到该HTTParty。要找到该方法内部的HTTParty,请执行以下操作: 通过查看perform_请求,我们发现它只是: 您应该查看Request类。查看 它允许您创建请求,然后您可以使用在不发送Ruby的情况下输出原始HTTP请求,ruby,http,httparty,Ruby,Http,Httparty,我正在尝试使用ruby设置对RESTAPI的POST请求。我想做的是输出原始HTTP请求,而不实际发送请求。我已经研究了HTTParty和Net:HTTP,但输出请求的唯一方法似乎是只发送一次请求。因此,基本上我需要一种方便的方法来创建HTTP请求字符串,而无需实际发送它。HTTParty.get和类似的方法是包含大量内部复杂性的帮助函数;您只需查看方法内部即可找到该HTTParty。要找到该方法内部的HTTParty,请执行以下操作: 通过查看perform_请求,我们发现它只是: 您应该查看
request.run
如果您正试图将其用于测试第三方服务。。。您希望模拟此请求(不向第三方服务发送实际请求,而是在本地生成此请求的响应)。。。那么我敦促你检查一下,谢谢你的回答。已经尝试过了,但是在请求类内部,创建请求的方法是私有的(setup\u raw\u Request)。我可以打开课堂,改变一些事情,但这不是我正在寻找的理想的优雅解决方案。
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 = Typhoeus::Request.new(
"www.example.com",
method: :post,
body: "this is a request body",
params: { field1: "a field" },
headers: { Accept: "text/html" }
)
request.run