Доброе время суток, уважаемые читатели!
В нашу техподдержку часто обращаются с просьбой показать пример работы API. Поэтому в данной статье мы с вами создадим очень простое приложение, которое будет получать позицию сайта по ключу в Гугл или Яндекс и выводить результат в окне.
Приложение будет иметь простейший интерфейс:
Описывать код HTML, CSS и JS не буду, в виду его максимальной простоты, и просто выложу его в спойлер.
HTML:<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Работаем с API</title> <link rel="stylesheet" href="style.css"> </head> <body> <div class="container"> <form> <label for="key">Ключ</label> <input type="text" id="key" name="key"> <label for="site">Сайт</label> <input type="text" name="site" id="site"> <br> <input class="but" type="button" value="Проверить в Google" name="but" onclick="check_google();"> <input class="but" type="button" value="Проверить в Yandex" name="but" onclick="check_yandex();"> </form> </div> <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script> <script src="script.js"></script> </body> </html>Код:.container{ display: flex; align-items: center; justify-content: center; } label{ display: block; } .but{ margin-top: 5px; }Код:function check_google(){ $.ajax({ type: "POST", url: "action.php", // data: {idParts:idParts,oper:'D24'}, data: {key:$('#key').val(),site:$('#site').val(),oper:'Google'}, success: function(msg) { alert(msg); //$('#results').html(msg); } }); } function check_yandex(){ $.ajax({ type: "POST", url: "action.php", // data: {idParts:idParts,oper:'D24'}, data: {key:$('#key').val(),site:$('#site').val(),oper:'Yandex'}, success: function(msg) { alert(msg); //$('#results').html(msg); } }); }PHP:<?php
use API\EngineWeb AS EngineWeb;
spl_autoload_register();
$engine =new EngineWeb('http://127.0.0.1:9091/API','','a-parser.com парсер');
switch($_POST['oper']){
case 'Google':
$engine->RequestGoogle();
break;
case 'Yandex':
$engine->RequestYandex();;
break;
}
А рассмотрим мы с вами класс который и работает с API.
Назовем его EngineWeb
Методы GetGoogleJSON и GetYandexJSON практически идентичны и формируют json для отправки.Код:class EngineWeb { protected $pass,$path,$google,$yandex; function __construct($url,$password = '',$query) { $this->pass = $password; $this->path = $url; $this->google = $this->GetGoogleJSON($query); $this->yandex = $this->GetYandexJson($query); }
Давайте рассмотрим один из них. Создадим пресет для получения позиции сайта в индексе Google через интерфейс.
Следующим нашим шагом будет получение опций для нашего JSON:
Теперь наш метод приобретает вид:
Как видно в описании метода, использовать мы будем метод oneRequest. Примеры для работы с другими методами, будут приложены в следующих статьях описывающих работу с API.Код:/*метод формирующий json для запроса*/ function GetGoogleJSON($query){ $json = json_encode([ 'action' => 'oneRequest', 'password' => $this->pass, 'data' => [ 'preset' => 'default', "configPreset" => "100 Threads", 'parser' => 'SE::Google::Position', 'query' => $query , 'options' => [ [ 'type' => 'override', "id" => "proxyretries", "value" => "100", ], [ 'type' => 'override', "id" => "linksperpage", "value" => 50, ], [ 'type' => 'override', "id" => "Util_ReCaptcha2_preset", "value" => "Antigate", ], [ "type" => "override", "id" => "formatresult", "value" => "\$position\\n" ], ], ] ]); return $json; }
Теперь, когда у нас есть JSON c нужными данными, реализуем метод, который будет его отправлять с помощью CURL:
Проверяем:Код:/*метод отправляющий запрос*/ function RequestGoogle(){ $ch = curl_init($this->path); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $this->google); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Length: ' . strlen($this->google))); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/plain; charset=UTF-8')); $response = curl_exec($ch); curl_close($ch); $response = json_decode($response, true); echo $response['data']['resultString']; }
Готово.
В следующей статье рассмотрим работу с addTask.
-
Вступайте в наш Telegram чат: https://t.me/a_parser Нас уже 2600+ и мы растем!Скрыть объявление
Работаем с API, часть 1
Пример работы с oneRequest
Метки: