一尘不染

用gzip压缩的Rails json响应

json

我有一个用rails编写的api,它在每个请求上均以JSON响应进行响应。

响应可能很大,因此我需要使用gzip压缩JSON响应。

想知道如何在Rails控制器中执行此操作?

我加了线

use Rack::Deflater

在config.ru中

我还应该在呈现JSON的行中更改某些内容吗?

render :json => response.to_json()

另外,我如何检查响应是否为gzip格式。

我从终端发出了curl请求,我只看到普通的普通JSON。


阅读 251

收藏
2020-07-27

共1个答案

一尘不染

对于以gzip格式的响应,我们不必更改render方法调用。
如果请求具有标头Accept-Encoding: gzip,Rails将使用gzip自动压缩JSON响应。

如果您不希望用户发送带有预设标头的请求,则可以在呈现响应之前在控制器中将标头手动添加到请求中:

request.env['HTTP_ACCEPT_ENCODING'] = 'gzip'
render :json => response.to_json()
2020-07-27