次のブログを読んでみると、CGI.pm は HEAD、GET、POST にしか対応していないようですね。しかも、外部からコードの振る舞いを変えるような仕組みにはなっていないようです。ちょっと困りました。
CGI.pmでtext/xmlなPOSTデータを読みたい場合 : blog.nomadscafe.jp
CGI.pm の POSTDATA - naoyaのはてなダイアリー
しかたがないので、次のように PUT のときは POST として、CGI.pm を騙す方法で使ってみています。
my $m = $ENV{'REQUEST_METHOD'};なんかイマイチですけれど、CGI.pm のソースコードを見る限り、期待どおり動作してくれるように見えます。また、実際に試行していますが、今のところ不都合はないようです。
if ($m eq 'PUT') {
$ENV{'REQUEST_METHOD'} = 'POST';
}
my $cgi = CGI->new;
$ENV{'REQUEST_METHOD'} = $m;
CGI.pm のバージョンは、次のとおりでした。ちょっと古めのものかもしれません。
$CGI::revision = '$Id: CGI.pm,v 1.208 2006/04/23 14:25:14 lstein Exp $';この対策は、バージョンや環境に依存するかもしれませんし、見つけていない不都合があるかもしれません。使おうとするときは、十分な検証をお願いしますね。
$CGI::VERSION='3.20';
RESTful Webサービス Leonard Richardson Sam Ruby 山本 陽平 by G-Tools |
0 件のコメント:
コメントを投稿