PHPでPUTで送られたデータを取得する

スポンサーリンク

概要

PHPでは、送られてきたデータは$_GETや$_POSTで受け取ることができます。

しかし、これらを使ってデータを受け取れるのは、リクエスト時のHTTPメソッドがGETやPOSTの時だけです。

なので、REST APIなどをPHPを使って実現しようした時に、PUTメソッドなどの別のHTTPメソッドでは、ほの方法でデータの取得ができません。

ここでは、GETやPOSTメソッド以外のHTTPメソッドでも適切にデータを取得できる方法を書きます。

テキストデータ

リクエストとして送られてくるデータには、テキストデータと、画像などのバイナリデータがあります。

まず、最初にテキストデータをどのようなHTTPメソッドでも受け取ることができるプログラムを書きます。

このプログラムは、下記のURLで解説されているものを参考にしています。

リクエストメソッド毎のパラメータの取得

使い方は、データを取得したい場所で、get_parameter()関数を呼び出して、その戻り値を利用するだけです。

重要なのは、GETやPOST以外の時は、「php://input」に送られてきたデータがあるので、それをfile_get_contents()関数を使って$parameterに代入しているという点です。

バイナリデータ

上記の方法でも良さそうですが、これでは画像などのバイナリデータを受け取ることができません。

なので、バイナリデータも受け取れるように書き換えたものが下記のものです。

このプログラムは下記のURLのものを参考にしています。

http://stackoverflow.com/questions/9464935/php-multipart-form-data-put-request

参考のページのプログラムではうまく動かなかったので、少しプログラムをいじっています。

新たに、parse_put()関数を追加して、その中でバイナリデータなどのファイルを$_FILESに入れています。

使い方は、parse_put()関数を呼び出して、その戻り値にはテキストデータが代入されているので、それを受け取り、ファイルなどのバイナリデータは$_FILESに代入されているので、$_FILESを参照します。

まとめ

PHPで、GETやPOSTメソッド以外の方法でデータを受け取るのがこんなに難しく面倒だとは思いませんでした。

スポンサーリンク

シェアする

フォローする