반응형
차트 유형이 여러게 있는데 이렇게도 쓰더라.
function CallAPI($method, $api, $data) {
$url = "http://localhost:82/slimdemo/RESTAPI/" . $api;
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
switch ($method) {
case "GET":
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "GET");
break;
case "POST":
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
break;
case "PUT":
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT");
break;
case "DELETE":
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
break;
}
$response = curl_exec($curl);
$data = json_decode($response);
/* Check for 404 (file not found). */
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
// Check the HTTP Status code
switch ($httpCode) {
case 200:
$error_status = "200: Success";
return ($data);
break;
case 404:
$error_status = "404: API Not found";
break;
case 500:
$error_status = "500: servers replied with an error.";
break;
case 502:
$error_status = "502: servers may be down or being upgraded. Hopefully they'll be OK soon!";
break;
case 503:
$error_status = "503: service unavailable. Hopefully they'll be OK soon!";
break;
default:
$error_status = "Undocumented error: " . $httpCode . " : " . curl_error($curl);
break;
}
curl_close($curl);
echo $error_status;
die;
}
// CALL Get Method
$api_data = array('id'=>$_GET['eid']);
$api_url = "www.onlinecode/GetCategoryById";
$result = CallAPI('GET', $api_url, $api_data);
// CALL Post Method
$api_url = "www.onlinecode/InsertCategory";
$api_data = array('title'=>$_REQUEST['somedata'],'description'=>$_REQUEST['somedata']);
$result = CallAPI('POST', $api_url, $api_data);
// CALL Put Method
$api_url = "www.onlinecode/UpdateCategory";
$api_data = array('id'=>$_REQUEST['somedata'],m'title'=>$_REQUEST['somedata'],'description'=>$_REQUEST['somedata']);
$result = CallAPI('POST', $api_url, $api_data);
// CALL Delete Method
$api_url = "www.onlinecode/DeleteCategory";
$api_data = array('id'=>$_GET['did']);
$result = CallAPI('DELETE', $api_url, $api_data);
이런 것도 있는데, 이것보단 그냥...
https://onlinecode.org/call-curl-get-post-put-delete-php/
<?php
$url = 'https://kapi.kakao.com/v1/user/me'; //접속할 url 입력
$post_data["param1key"] = "param1value";
$post_data["param2key"] = "param2value";
$access_token_value = "올바른 access token 입력";
//$header_data = array('Authorization: Bearer access_token_value'); //에러 발생
$header_data = [];
$header_data[] = 'Authorization: Bearer '.$access_token_value;
$ch = curl_init(); //curl 사용 전 초기화 필수(curl handle)
curl_setopt($ch, CURLOPT_URL, $url); //URL 지정하기
curl_setopt($ch, CURLOPT_POST, 1); //0이 default 값이며 POST 통신을 위해 1로 설정해야 함
curl_setopt ($ch, CURLOPT_POSTFIELDS, $post_data); //POST로 보낼 데이터 지정하기
curl_setopt ($ch, CURLOPT_POSTFIELDSIZE, 0); //이 값을 0으로 해야 알아서 &post_data 크기를 측정하는듯
curl_setopt($ch, CURLOPT_HEADER, true);//헤더 정보를 보내도록 함(*필수)
curl_setopt($ch, CURLOPT_HTTPHEADER, $header_data); //header 지정하기
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); //이 옵션이 0으로 지정되면 curl_exec의 결과값을 브라우저에 바로 보여줌. 이 값을 1로 하면 결과값을 return하게 되어 변수에 저장 가능(테스트 시 기본값은 1인듯?)
$res = curl_exec ($ch);
var_dump($res);//결과값 확인하기
echo '<br>';
print_r(curl_getinfo($ch));//마지막 http 전송 정보 출력
echo curl_errno($ch);//마지막 에러 번호 출력
echo curl_error($ch);//현재 세션의 마지막 에러 출력
curl_close($ch);
?>
위방식보다 아래의 방식이 최고 나은 듯 싶다.
커스텀 헤더도 넣고, get방식도 그냥 'delete'대신 'get'넣으면 되는지라.
$header=array(
'Content-Type: application/json'
);
'delete'방식
$data = array(
'id'=> 1,
'name' => chicken
);
$header=array(
'Content-Type: application/json'
);
$query = http_build_query($data);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($ch, CURLOPT_POSTFIELDS, $query);
$response = curl_exec($ch);
curl_close($ch);
'put'방식
$data = array(
'id'=> 1,
'name' => chicken
);
$header=array(
'Content-Type: application/json'
);
$query = http_build_query($data);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_POSTFIELDS,$query);
$response = curl_exec($ch);
get
$data = array(
'test' => 'test'
);
$domain = "https://www.naver.com";
$query = http_build_query($data);
$url = $domain . "?" . $query;
$ch = curl_init(); //curl 초기화
curl_setopt($ch, CURLOPT_URL, $url); //URL 지정하기
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //요청 결과를 문자열로 반환
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); //connection timeout 10초
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //원격 서버의 인증서가 유효한지 검사 안함
$response = curl_exec($ch);
curl_close($ch);
return $response;
post
$data = array(
'test' => 'test'
);
$url = "https://www.naver.com";
$ch = curl_init(); //curl 초기화
curl_setopt($ch, CURLOPT_URL, $url); //URL 지정하기
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //요청 결과를 문자열로 반환
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); //connection timeout 10초
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //원격 서버의 인증서가 유효한지 검사 안함
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); //POST data
curl_setopt($ch, CURLOPT_POST, true); //true시 post 전송
$response = curl_exec($ch);
curl_close($ch);
return $response;
대충 이렇게 쓰면 된다.
컬통신 유형 끝.
728x90
'취업 > PHP' 카테고리의 다른 글
[php] 부트스트랩 tab 기능 구현하기. (0) | 2022.01.14 |
---|---|
[php] HTML 신기한 현상. A태그 안 A태그를 넣으면 (0) | 2022.01.14 |
[php] 부트스트랩 tab widget 클릭 이벤트 발생하기. (0) | 2021.12.28 |
[php]다중 탭 접속 쿠키 공유 문제..세션 스토리지 사용하자. (0) | 2021.12.14 |
[php] datatable export button not showing (0) | 2021.11.30 |