이 문서에서는 PHP에서 JSON 요청을 보내고 받는 자세한 방법과 예제 코드를 공유합니다. 관심 있는 친구는 이를 참조할 수 있습니다.
이제 마이크로서비스에서는 많은 API가 더 많은 매개변수를 전달해야 하므로 매개변수를 전달하기 위해 FormData 대신 POST 요청의 요청 본문으로 모든 매개변수를 포함하는 JSON 데이터가 필요합니다. 매개변수가 많은 경우 POST JSON이 POST FormData보다 낫습니다. 개발 및 테스트를 용이하게 하기 위해 오늘은 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
$data = json_decode(file_get_contents('php://input'), true);
$HTTP_RAW_POST_DATA](http://php.net/manual/zh/reservedvari.ables.http를 허용합니다. 원시 포스트 데이터. php) 특정 php.ini 지시문에 의존하지 않기 때문입니다. 또한 [$HTTP_RAW_POST_DATA가 기본적으로 채워지지 않는 경우에는 Always_populate_raw_post_data가 활성화될 때보다 메모리가 덜 필요할 수 있습니다. enctype="multipart/form-data"를 사용하면 php://input이 유효하지 않습니다.
참고: PHP 5.6 이전에는 php://input으로 열린 데이터 스트림을 한 번만 읽을 수 있었습니다. 데이터 스트림은 탐색 작업을 지원하지 않습니다. 그러나 SAPI 구현에 따라 요청 본문 데이터가 저장되면 다른 php://input 데이터 스트림을 열고 다시 읽을 수 있습니다. 일반적으로 이는 POST 요청에만 해당되며 PUT 또는 PROPFIND와 같은 다른 요청 방법에는 해당되지 않습니다.
Guzzle을 사용하여 JSON 요청 보내기
개발 중에 위와 같이 php 컬 라이브러리를 사용하여 요청을 보내는 것이 아니라 오픈 소스 Http 패키지를 사용하여 보내는 경우가 많습니다. JSON 요청은 편리한 방법을 제공합니다.
//Guzzle version >= 5 use GuzzleHttp\Client; $client = new Client(); $response = $client->post('url', [ GuzzleHttp\RequestOptions::JSON => ['foo' => 'bar'] ]);
Laravel에서 JSON POST를 수락하세요
요청 본문의 전체 JSON을 가져오려면 요청의 json()->all()을 사용하세요.
//IN controller public function recieveJson(Request $request) { $request->json()->all(); //返回值是一个数组 //针对前面的请求例子,json方法返回的是数组 ["foo" => "bar"] //$request->json()返回的是ParamBage }
요청의 입력 방법을 사용하여 가져오세요. 요청 전체 JSON 또는
의 특정 키 값 Laravel 애플리케이션에 JSON 요청을 보낼 때 Content-Type 요청 헤더가 application/json으로 설정되어 있는 한 JSON 데이터는 다음을 통해 얻을 수 있습니다. 입력 방법 또는 "."을 통해 배열 구문 분석:
public function laravelRecieveJson(Reuqest $request) { $foo = $request->input('foo');//echo $foo => 'bar' //使用点号获取内嵌数组key的值 //假设请求体中的JSON为 {"user": {"name": "kevin", "age": 18}} $name = $reqeust->input('user.name');//echo $name => 'kevin' }
관련 권장 사항:
PHP를 사용하여 RabbitMQ 메시지 대기열에 액세스하는 방법
PHP는 단순히 웹 사이트 방문 기록 기능을 구현합니다.
위 내용은 PHP는 JSON 요청 보내기 및 받기를 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!