PHP를 사용하여 cURL GET 요청
웹과 주로 HTTPS를 통해 GET
요청을 사용하여 특정 리소스 표현을 얻습니다. 데이터를 얻기 위해 GET
방법이 사용됩니다.
특히 API 및 웹 스크래핑 시나리오에서 개발자는 언어별 방법을 사용합니다. 우리는 cURL
함수를 사용하여 PHP에서 GET
요청을 처리합니다.
cURL
라이브러리는 초기화, 연결 설정 및 전송에서 리소스 반환까지의 작업을 처리합니다. 이러한 모든 작업을 수행하기 위해 curl_close()
, curl_init()
에서 curl_exec()
와 같은 내장 함수를 사용할 수 있습니다.
이 튜토리얼은 cURL
GET
요청에 대한 다양한 사용 사례와 이를 수행하는 해당 기능에 대해 설명합니다.
curl_init()
및 curl_setopt()
를 사용하여 PHP에서 요청 가져오기
다른 서버나 사용자로부터 요청을 받는 일반적인 형식은 다음과 같은 기본 기능을 사용하는 것입니다.
curl_init(); // initializes a cURL session
curl_setopt(); // changes the cURL session behavior with options
curl_exec(); // executes the started cURL session
curl_close(); // closes the cURL session and deletes the variable made by curl_init();
이 기사에서 네 가지 기능을 모두 볼 수 있고 cURL
라이브러리를 사용하여 작성할 GET
요청 코드의 대부분을 볼 수 있습니다.
이제 몇 가지 사용 예를 위해 $url
변수에 요청을 받고자 하는 사이트의 URL을 할당하고 curl_init()
함수를 사용하여 cURL
세션을 시작합니다. 그런 다음 지정된 URL에서 수행되는 cURL
전송에 대한 옵션을 지정합니다.
첫 번째 curl_setopt()
함수 문에는 $url
변수 할당 값과 함께 “가져올 URL” 옵션이 있습니다. 두 번째 curl_setopt()
함수 문은 부울 값을 보유하는 전송을 문자열로 반환
옵션을 보유합니다.
<?php
$url = "https://reqbin.com/echo";
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
//for debug only!
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$resp = curl_exec($curl);
curl_close($curl);
var_dump($resp);
?>
위의 PHP 코드의 출력은 아래와 같습니다.
PHP에서 API(JSON)와 함께 cURL
사용
일반적으로 API와 상호 작용할 때 데이터 응답은 종종 JSON이고 cURL
기능을 사용하면 curl_getinfo()
및 json_encode()
기능을 사용하여 속성-값 쌍 및 배열 형식으로 이러한 데이터 개체를 적절하게 처리할 수 있습니다. 다른 사람들 사이에서.
여기에서 데모 User
API와 상호 작용하고 cURL
라이브러리를 사용하여 JSON 데이터를 얻고 적절한 기능을 사용하여 JSON 파일을 인코딩합니다.
-
URL 변수와
cURL
세션을 초기화합니다.$url = 'https://jsonplaceholder.typicode.com/users'; // Sample example to get data. $resource = curl_init($url);
-
cURL
옵션과 정보 변수를 설정합니다.curl_setopt($resource, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($resource); $info = curl_getinfo($resource); $code = curl_getinfo($resource, CURLINFO_HTTP_CODE);
-
응답 상태 코드를 확인하기 위해 디버그하지만(선택 단계)
200
이 표시되어야 합니다.echo $result.'<br>'; echo "<pre>"; print_r($info); echo "</pre>"; // Get response status code echo "<pre>"; print_r($code); echo "</pre>";
-
리소스를 더 잘 관리하려면
cURL
세션을 닫습니다.curl_close($resource);
-
JSON을 통해 API에서 얻은 데이터를 저장할 어레이 템플릿을 만듭니다.
// set_opt_array $user = [ 'name' => 'John Doe', 'username' => 'john', 'email' => 'john@example.com' ];
-
curl_init()
및curl_setopt_array()
를 사용하여 모든 중요한 옵션을 사용하여 URL에서 구문 분석된 JSON 데이터를 처리합니다.$resource = curl_init(); curl_setopt_array($resource, [ CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_HTTPHEADER => ['content-type: application/json'], CURLOPT_POSTFIELDS => json_encode($user), ]);
-
curl_exec()
및curl_close()
함수를 사용하여 초기화된cURL
세션을 실행하고cURL
세션을 닫고 각각 모든 리소스를 해제합니다. 그러나 PHP 8.0.0 이상에서는curl_close()
함수가 효과가 없습니다.$result = curl_exec($resource); // creates and returns result curl_close($resource); echo $result;
코드의 출력은 아래의 PHP 다차원 배열로 나타납니다.
[
{
"id": 1,
"name": "Leanne Graham",
"username": "Bret",
"email": "Sincere@april.biz",
"address": {
"street": "Kulas Light",
"suite": "Apt. 556",
"city": "Gwenborough",
"zipcode": "92998-3874",
"geo": {
"lat": "-37.3159",
"lng": "81.1496"
}
},
"phone": "1-770-736-8031 x56442",
"website": "hildegard.org",
"company": {
"name": "Romaguera-Crona",
"catchPhrase": "Multi-layered client-server neural-net",
"bs": "harness real-time e-markets"
}
},
{
"id": 2,
"name": "Ervin Howell",
"username": "Antonette",
"email": "Shanna@melissa.tv",
"address": {
"street": "Victor Plains",
"suite": "Suite 879",
"city": "Wisokyburgh",
"zipcode": "90566-7771",
"geo": {
"lat": "-43.9509",
"lng": "-34.4618"
}
},
"phone": "010-692-6593 x09125",
"website": "anastasia.net",
"company": {
"name": "Deckow-Crist",
"catchPhrase": "Proactive didactic contingency",
"bs": "synergize scalable supply-chains"
}
},
{
"id": 3,
"name": "Clementine Bauch",
"username": "Samantha",
"email": "Nathan@yesenia.net",
"address": {
"street": "Douglas Extension",
"suite": "Suite 847",
"city": "McKenziehaven",
"zipcode": "59590-4157",
"geo": {
"lat": "-68.6102",
"lng": "-47.0653"
}
},
"phone": "1-463-123-4447",
"website": "ramiro.info",
"company": {
"name": "Romaguera-Jacobson",
"catchPhrase": "Face to face bifurcated interface",
"bs": "e-enable strategic applications"
}
},
....
]
Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.
LinkedIn