참고: 이 문서는 2019년 9월에 공개되었고 2024년 11월에 LLM(ChatGPT)를 활용하여 옮긴 것으로서, 여기서 다루는 내용은 최신 정보와 다를 수 있습니다.
주요 특징
REST API 호출을 간편하게 처리하며, JSON, URL-encoded, Multipart와 같은 다양한 요청 포맷을 지원.
PHP 환경에서 curl과 같은 추가 라이브러리 없이도 사용 가능.
Basic, Bearer, OAuth 등의 인증 방식을 지원. - 캐싱을 통해 API 호출 비용 절감 가능.
사용 예시
예시 1. JSON 포맷의 POST 요청 (URL-encoded)
URL-encoded 데이터를 POST 방식으로 전송하며, Basic 인증을 사용하는 예시입니다.
$request_url = sprintf("https://api.twilio.com/2010-04-01/Accounts/%s/Messages.json", $sid); $response = get_web_json($request_url, "post", array( "headers" => array( "Content-Type" => "application/x-www-form-urlencoded", "Authentication" => array("Basic", $cnf['sid'], $cnf['token']), ), "data" => array( "Body" => $message, "From" => $cnf['from'], "To" => $to, ), ));
예시 2: JSON 포맷의 POST 요청 (Multipart 데이터)
Multipart 데이터를 포함한 POST 요청 예시입니다. 이때 Basic 인증을 사용합니다.
$response = get_web_json(sprintf("https://api.mailgun.net/v3/%s/messages", $domain), array( "headers" => array( "Content-Type" => "multipart/form-data", "Authentication" => array("Basic", "api", $cnf['apikey']), ), "data" => array( "from" => sprintf("%s <%s>", $cnf['name'], $cnf['from']), "to" => $to, "subject" => $subject, "text" => $content, ), ));
예시 3: JSON-RPC 기반의 REST API 요청
Zabbix와 같은 API에서 사용하는 JSON-RPC 포맷으로 REST API 요청을 보내는 예시입니다.
$response = get_web_json($zabbix_api_url, "jsondata", array( "headers" => array( "Content-Type" => "application/json-rpc", ), "data" => array( "jsonrpc" => "2.0", "method" => "host.get", "params" => array( "output" => array("hostid", "host"), "selectInterfaces" => array("interfaceid", "ip"), ), "id" => zabbix_get_id(), "auth" => $zabbix_auth, ), ));
예시 4: OAuth 1.0 프로토콜 기반의 REST API 요청
OAuth 1.0 인증 방식을 사용하여 REST API 요청을 처리하는 예시입니다.
$response = get_web_json($wp_server_url . '/oauth/token/', "jsondata", array( "headers" => array( "Content-Type" => "application/x-www-form-urlencoded", "Authorization" => sprintf("Basic %s", base64_encode($client_id . ":" . $client_secret)), ), "data" => array( "grant_type" => "authorization_code", "code" => $code, "client_id" => $client_id, "client_secret" => $client_secret, "redirect_uri" => get_route_link($route), "state" => $state, ), ));
예시 5: Bearer (토큰) 인증을 사용하는 REST API 요청
Bearer 토큰을 이용해 인증을 처리하는 REST API 요청의 예시입니다.
$response = get_web_json(get_web_build_gs($wp_server_url, array( "rest_route" => "/wp/v2/posts" )), "jsondata", array( "headers" => array( "Content-Type" => "application/x-www-form-urlencoded", "Authorization" => "Bearer " . $access_token, ), "data" => $default_data, ));
예시 6: 캐싱을 사용한 API 결과 처리
API 호출 결과를 캐싱하여, 동일한 API 요청을 반복하지 않도록 처리하는 예시입니다.
if(loadHelper("webpagetool")) { $remote_host = "http://" . ($protocol == "ipv6" ? "ipv6." : "") . "icanhazip.com"; $response = get_web_page($remote_host, "get.cache"); $addr = get_value_in_array("content", $response, $addr); }