В нашем коде Rails есть функция, которая принимает тело JSON POST:
contacts = ActiveSupport::JSON.decode(request.raw_post.gsub("+", ""))
(я знаю, что я могу получить это и из params["_json"]
, но у нас очень большой (МБ) Тела POST, которые по какой-то причине не помещаются в params["_json"]
(и + также выдает ошибки).
Поскольку JSON обычно отправляется с мобильного клиента, для нас важно оптимизировать размер загрузкиМы хотим переключиться на сжатие тела POST.
Однако, независимо от того, что мы делаем, мы получаем ту же ошибку без номера строки:
MultiJson::DecodeError (743: unexpected token at ''):
Мы попробовали:
gzipped_contacts = Zlib::GzipReader.new(StringIO.new(request.raw_post)).read
contacts = ActiveSupport::JSON.decode(gzipped_contacts.gsub("+", ""))
Это:
gzipped_contacts = ActiveSupport::Gzip.decompress(request.raw_post)
contacts = ActiveSupport::JSON.decode(gzipped_contacts.gsub("+", ""))
И найденное здесь решение: Rails: как разархивировать сжатое тело XML-запроса?
I 'Я почти уверен, что это не происходит на уровне контроллера, потому что я не могу ничего там записать, поэтому это нужно сделать в промежуточном программном обеспечении или на сервере (но я не могу найти ничего для Nginx, которое позволило бы нам сдуть).помощь!