はじめに
最近PHPをはじめました。
HTTPのPostリクエストを受取り、Bodyの内容を取得する方法が分からず調べてみました。
結論
下記コードで実現できました!
Version
PHP:5.5.3
Cake:2.5.8
// POSTリクエスト以外はエラー
if (!$this->request->is('post')) {
echo json_encode(["is_success" => false, "error" => "POSTリクエスト不使用"]);
return;
}
// リクエストボディの内容を取得
$json = file_get_contents('php://input');
$data = json_decode($json, true);
// リクエストボディからuserIDを取得
$user_id = $data['user_id'];
詳細
ChatGPTに聞きながら詳細をまとめました。
1. POSTリクエストのチェック
最初のブロックは、受け取ったリクエストがPOSTメソッドであるかを確認しています。Bodyの内容を取得するのに必須ではないですがPostリクエストであることを条件としています。
2. リクエストボディの取得
file_get_contents('php://input')
を使ってリクエストボディの内容を取得します。php://input
は、リクエストのボディ部分にアクセスするためのPHPのラッパーで、生のPOSTデータを読み込むために使われているそうです。
取得したJSON形式のデータはjson_decode()関数によってPHPの配列に変換されます。json_decodeの第二引数にtrueを指定することで、結果が連想配列として返されます。
// 連想配列の例(キーを指定してセットする)
$array = array('apple'=>'りんご', 'peach'=>'もも', 'pear'=>'なし');
3. userIDの取得
最後に、連想配列として解析されたデータからuser_idキーに対応する値を取得しています。この値は変数$user_idに代入します。
まとめ
PHP初心者ですがHTTP通信の理解が深まったり、動的型付けがどういうものなのかが見えてきて面白いです!
最後に
私の働いている会社で経験の有無を問わず採用を行っています。
興味のある方は是非カジュアル面談から応募してみてください!