【问题标题】:Ruby Sinatra simple app - Raw POST DataRuby Sinatra 简单应用程序 - 原始 POST 数据
【发布时间】:2011-05-16 18:06:04
【问题描述】:

我想设置一个简单的 Sinatra 应用程序来捕获发送到 / URL 的原始 POST 数据,并将此数据作为格式为 YYYYMMDD-HHMMSS.json 的文件保存到文件系统。

我将发布到 URL 的数据是 JSON 格式的简单文本数据。

设置这个简单的 Sinatra 应用程序的最佳方法是什么?不确定如何捕获原始 POST 数据。

更新/代码:

post '/' do
    raw = request.env["rack.input"].read
    n = DateTime.now
    filename = n.strftime("%Y%m%d") + "T" + n.strftime("%H%M%S") #any way to include microseconds?
    # write to file
end

【问题讨论】:

  • 请参阅下面的答案和 cmets。我已经尝试了此页面上的 cmets 中提到的所有方法gittr.com/index.php/archive/…
  • 这些方法都不起作用。我该如何解决这个问题?

标签: ruby json sinatra raw-post


【解决方案1】:

这样的东西应该适合你:

post "/" do
  File.open("#{Time.now.strftime("%Y%m%d-%H%M%S")}.json", "w") do |f| 
    f.puts params["data"]    
  end 
end

【讨论】:

  • 哇。在我调整问题时得到了它。这应该够了吧。有什么方法可以在时间戳中包含毫秒?
  • Time.now.strftime("%Y%m%d-%H%M%S%L") 以毫秒为单位。
  • 必须在 Windows 上升级到 1.92 才能获得此功能。 Windows 上的 1.87 缺少 %L 选项。把我逼疯了。
  • 嗯。 “数据”和:数据不起作用。你如何解决这个问题?我是否需要发送特定的请求标头才能使其正常工作?
  • 我使用了以下 jQuery: $.ajax({type: 'POST', url: '/', data: '{data: "someData"}'}); from firebug 来测试这个 sn-p。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-29
  • 2015-08-12
  • 1970-01-01
  • 1970-01-01
  • 2012-03-02
相关资源
最近更新 更多