#ruby #json #sinatra #raw-post
#ruby #json #sinatra #необработанный post
Вопрос:
Я хотел бы настроить простое приложение Sinatra для сбора необработанных данных POST, которые отправляются на / URL, и сохранить эти данные в файловой системе в виде файла в формате ГГГГММДД-ХХММСС.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
Комментарии:
1. Смотрите ответ ниже и комментарии. Я перепробовал все методы, упомянутые в комментариях на этой странице gittr.com/index.php/archive /…
2. Ни один из этих методов не сработал. Как мне устранить это?
Ответ №1:
Что-то подобное должно сработать для вас:
post "/" do
File.open("#{Time.now.strftime("%Y%m%d-%H%M%S")}.json", "w") do |f|
f.puts params["data"]
end
end
Комментарии:
1. Вау. Добрался до этого, пока дорабатывал вопрос. Это должно сработать. Есть ли способ включить миллисекунды во временную метку?
2.
Time.now.strftime("%Y%m%d-%H%M%S%L")
с миллисекундами.3. Пришлось обновиться до 1.92 в Windows, чтобы получить это. 1.87 в Windows отсутствует параметр %L. Сводило меня с ума.
4. хммм. «данные» и: данные не работают. Как вы устраняете это? Нужно ли мне отправлять определенный заголовок запроса, чтобы это сработало?
5. Для тестирования этого фрагмента я использовал следующий jQuery:
$.ajax({type: 'POST', url: '/', data: '{data: "someData"}'});
из firebug.