この記事では、PHP で JSON リクエストを送受信するための詳細な方法とサンプルコードを紹介します。興味のある方は参考にしてください。
現在、マイクロサービスでは、多くの API がより多くのパラメーターを渡す必要があるため、パラメーターを渡すには FormData ではなく、すべてのパラメーターを含む JSON データを POST リクエストのリクエスト本文として必要とします。パラメーターが多い場合は、POST FormData よりも POST JSON の方が適しています。開発とテストを容易にするために、今日は PHP で JOSN POST を送信および受け入れる方法と、JSON リクエスト用の Laravel フレームワークで提供される JSON リクエスト データにアクセスするための便利な方法を見ていきます。
PHPはJSON POSTを送信します
$url = "http://example.com/request/post/json"; $data = json_encode(["foo" => "bar"]); $curl = curl_init($url); curl_setopt($curl, CURLOPT_HEADER, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-type: application/json")); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); curl_exec($curl); curl_close($curl);
PHPはJSON POSTを受け入れます
$HTTP_RAW_POST_DATA](http://php.net/manual/zh/reservedvari .ables.httprawpostdata。 php) は、特定の php.ini ディレクティブに依存しないためです。 また、[$HTTP_RAW_POST_DATA がデフォルトで設定されない場合、always_populate_raw_post_data がアクティブ化されている場合よりも必要なメモリが少なくなる可能性があります。 enctype="multipart/form-data"を使用した場合、php://inputは無効となります。
注: PHP 5.6 より前では、php://input によって開かれたデータ ストリームは 1 回しか読み取ることができません。データ ストリームはシーク操作をサポートしていません。 ただし、SAPI の実装によっては、リクエスト本文のデータが保存されるときに、別の php://input データ ストリームを開いて再読み取ることができます。 通常、これは POST リクエストにのみ当てはまり、PUT や PROPFIND などの他のリクエスト メソッドには当てはまりません。
開発中に多くの場合、上記のようにリクエストを送信するために PHP Curl ライブラリを使用せず、Guzzle などの一般的に使用される Http パッケージを使用して送信します。 JSON リクエストは便利なメソッドを提供します。
$data = json_decode(file_get_contents('php://input'), true);LaravelでJSON POSTを受け入れます
リクエストのjson()->all()を使用してリクエスト本文のJSON全体を取得します
//Guzzle version >= 5 use GuzzleHttp\Client; $client = new Client(); $response = $client->post('url', [ GuzzleHttp\RequestOptions::JSON => ['foo' => 'bar'] ]);
リクエストの入力メソッドを使用して取得しますリクエスト JSON 全体、または
の特定のキーの値 Laravel アプリケーションに JSON リクエストを送信するとき、Content-Type リクエスト ヘッダーが application/json に設定されている限り、JSON データはinput メソッド、または「.」を使用して配列を解析します:
//IN controller public function recieveJson(Request $request) { $request->json()->all(); //返回值是一个数组 //针对前面的请求例子,json方法返回的是数组 ["foo" => "bar"] //$request->json()返回的是ParamBage }
関連する推奨事項:
PHP を使用して RabbitMQ メッセージ キューにアクセスする方法PHP は Web サイトの訪問を記録する機能を実装するだけです
以上がPHP は JSON リクエストの送受信を実装します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。