トップ 最新

ただのにっき

2013-09-18(水) [長年日記]

HTTPリクエストの圧縮をサポートする

HTTPクライアントから大きなデータをPOSTするときに圧縮可能ならそうして欲しい場合があって(もちろんブラウザはそんなことしてくれないので専用クライアントを使う前提)、サーバアプリは圧縮・未圧縮の状況にかかわりなく書きたいので、その部分だけRackミドルウェアにしてみた。ちなみにリクエストではなくてレスポンスなら普通の話なので何も考えずにRack::Deflaterを使えば良い。

最初、Rackでリクエストのbodyを操作する方法がわからなくてTwitterでつぶやいたら@moroが教えてくれたので解決。いつもいつも助かります(^^;

こんな感じで使える:

require 'rack/request_decompressor'
use Rack::RequestDecompressor

クライアントはContent-Encodingヘッダを追加してPOSTすればよろしい。

Tags: rack http