>  기사  >  백엔드 개발  >  PHP는 JSON 요청 보내기 및 받기를 구현합니다.

PHP는 JSON 요청 보내기 및 받기를 구현합니다.

不言
不言원래의
2018-06-07 09:56:233706검색

이 문서에서는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.