Как зафиксировать размер ответа API в Rails?

Я хочу зафиксировать размер ответов, сделанных API моего приложения Rails 3.

Идея состоит в том, что если клиентское приложение запрашивает ресурс, полный размер ответа JSON (в КБ/МБ после RABL визуализирует его) могут быть захвачены и сохранены, чтобы я мог видеть, сколько данных использует клиентское приложение позже. Поскольку они исключительно велики, некоторые из этих ответов API JSON кэшируются (на данный момент локально, в ближайшем будущем в Redis), поэтому решение должно иметь возможность захватывать размер кэшированных ответов, а не только отображаемых.

Каков наилучший способ и место для выполнения этого в Rails? На уровне стойки? В контроллере (контроллеры используют ActionController::Metal)? Очевидно, что чем меньше накладных расходов на время отклика, тем лучше.


person Michael    schedule 31.08.2013    source источник


Ответы (1)


Вы можете включить ContentLength в стойке, добавив это в свой application.rb

config.middleware.use Rack::ContentLength

Затем длина контента будет отправляться в заголовке с каждым запросом.

person trh    schedule 31.08.2013
comment
Это здорово, но мне нужно получить доступ к ContentLength внутри приложения, чтобы сохранить его где-нибудь (или зарегистрировать). Знаете ли вы, как это сделать, чтобы событие срабатывало после определения ContentLength (или, что еще лучше, после закрытия клиентского соединения)? - person Michael; 01.09.2013