Plackをバージョンアップしたら json decode された値のpostを受け取れなくなった

  • 投稿日:
  • by
  • カテゴリ:

めっちゃ古いPlackで動いてるアプリケーションがあったのでアップデートしたのだが json encode された文字列のpostを受け取ったときに

$c->req->param("hoge")

で受け取れなくなっていたので調べたら最初はそれで受け取れるのだが途中で http://blog.nomadscafe.jp/2014/02/httpentityparser.html の変更が入って取れなくなっていた。
取りたいならば


$parser->register('application/json','HTTP::Entity::Parser::JSON');

すればいい、はずなのだが受け取れなくて、調べていたらリクエスト時に Content-Length も Content-Type も送っていなかった。
それぞれここで問題になる。
https://metacpan.org/source/KAZEBURO/HTTP-Entity-Parser-0.24/lib/HTTP/Entity/Parser.pm#L81
https://metacpan.org/source/KAZEBURO/HTTP-Entity-Parser-0.24/lib/HTTP/Entity/Parser.pm#L55
なのでpostするときにそれぞれのヘッダを入れてもらうようにして解決した。