我有一个用rails编写的api,它在每个请求上均以JSON响应进行响应。
响应可能很大,因此我需要使用gzip压缩JSON响应。
想知道如何在Rails控制器中执行此操作?
我加了线
use Rack::Deflater
在config.ru中
我还应该在呈现JSON的行中更改某些内容吗?
render :json => response.to_json()
另外,我如何检查响应是否为gzip格式。
我从终端发出了curl请求,我只看到普通的普通JSON。
对于以gzip格式的响应,我们不必更改render方法调用。 如果请求具有标头Accept-Encoding: gzip,Rails将使用gzip自动压缩JSON响应。
render
Accept-Encoding: gzip
如果您不希望用户发送带有预设标头的请求,则可以在呈现响应之前在控制器中将标头手动添加到请求中:
request.env['HTTP_ACCEPT_ENCODING'] = 'gzip' render :json => response.to_json()