Как получить данные из API и показать их на странице PHP? - PullRequest
0 голосов
/ 13 июня 2019

Я хочу сделать страницу на моем сайте с некоторыми данными из API. Сайт сделан на Wordpress.

Я пробовал использовать различные коды / функции, найденные в Интернете, но безуспешно.

API требует, чтобы я вошел в систему как пользователь, пароль или токен (я предпочитаю токен).

Я новичок в API и PHP и даже не знаю с чего начать.

Если кто-то использовал его раньше, я хочу получить данные из Exoclick API.

Из интерфейса API в Exoclick я вижу, что запрос сделан с помощью curl, я никогда не использовал его раньше и предпочитаю этого не делать. Вот пример

curl -X GET --header 'Accept: application/json' --header 'Authorization: Bearer tokenhere' 'https://api.exoclick.com/v2/statistics/publisher/country?'

Из руководства по API я нашел этот код для входа в систему, но, поместив его на случайную страницу для тестирования, он просто вылетает из моего сайта:

<?php

        // Include Request and Response classes

        $url = 'https://api.exoclick.com/v2/login';

        $params = array(
                'api_token'  => 'tokenhere'
            );

        // Create a new Request object
        $request = new Request($url, 'POST', $params);

        // Send the request
        $request->send();

        // Get the Response object
        $response = $request->getResponse();

        if($response->getStatusCode() == 200) {

            // Retrieve the session token details
            $token = $response->getBodyDecoded();

            print_r($token);
        }
        else {

            echo $response->getStatusCode() . PHP_EOL;
            echo $response->getReasonPhrase() . PHP_EOL;
            echo $response->getBody() . PHP_EOL;
        }
    ?>

1 Ответ

0 голосов
/ 13 июня 2019

Если вы не знакомы с API и связанными библиотеками, по моему мнению, вам следует начать с использования cURL, чтобы освоить все. Кроме того, хорошим способом для ознакомления с API является использование Postman. Вы также можете использовать его для генерации определенных вызовов API в разных базах кода.

В вашем случае вам сначала нужно получить токен на предъявителя, чтобы вы могли сделать запрос на нужные вам данные. В моем примере я покажу вам две функции, которые вы можете использовать, чтобы сделать GET-запрос к конечной точке / campaigns, используя токен, который вы получаете при выполнении начального POST-запроса.

В конечном счете, решение вашей проблемы зависит от множества факторов, таких как тип данных, которые вы пытаетесь получить, и способ отображения. Будете ли вы запрашивать данные нажатием кнопки, загрузкой страницы и т. Д ...

Я бы также порекомендовал ознакомиться с Ajax и узнать, как делать запросы Ajax с jQuery / JS и Wordpress, поскольку это может помочь вам не только с этим API, но и с другими. Также узнайте, как просматривать данные, которые вам возвращаются, с помощью PHP-объектов или массивов.

Это требует некоторой практики, но начните с объединения маленьких кусочков, которые работают, например, ниже, где вы можете по крайней мере получить данные и отобразить их на странице.

<?php

// A function that will make a GET request to the /campaigns endpoint

function get_data_from_api() {

// Run the function that will make a POST request and return the token

$exoclick_token = get_token_from_api();

$new_token = $exoclick_token->token;

$auth_array = array(
        "Authorization:",
        "Bearer",
        $new_token
);

$new_token = implode(" ", $auth_array);

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.exoclick.com/v2/campaigns",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_POSTFIELDS => "",
  CURLOPT_HTTPHEADER => array(
     $new_token,
     "Content-Type: application/json",
     "cache-control: no-cache"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

$data = json_decode($response, true);

// do something with the data

print_r($data);

}


function get_token_from_api() {

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.exoclick.com/v2/login",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "{\n\"api_token\": \"[ADD YOUR TOKEN]\"\n}",
  CURLOPT_HTTPHEADER => array(
    "Accept: */*",
    "Cache-Control: no-cache",
    "Connection: keep-alive",
    "Content-Type: application/json",
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

// Decode the response from the API

    $decoded_response_object = json_decode($response);

    curl_close($curl);

// Return the decoded response so you can use it to make another request
    return $decoded_response_object;

}

// Run the initial function
get_data_from_api();

?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...