Вход Регистрация Google+

PHP простая работа с апи сторонего сервиса

   Как упрастить работа со сторонем сервисом, этим вопросом задаються многие программисты, так или иначе сталкивающиеся с работой внешнего api. Сегодня мы рассмотрим rest (проще говоря это RPC(remote procedure call - удалёный вызов протокола) но с использованием http). Это значит что вы вызываете процедуру, какой то программный код с помощью, простых и понятных каждому GET, POST, PUT, DELETE запросов. 

  И так у нас есть определённое api, которое мы хотим интегрировать в наш проэкт. Алгоритм действий в данном случае будет таков:

  1. Получить данные
  2. Распарсить их
  3. Обработать

Остановимся подробнее на первом пункте, получение данных. В действительности многие советуют использовать curl, но я бы посоветовал использовать функции `file_get_contents` и `file_put_contents` с использованием малоизвестного параметра `context`  созданого с помощью функции `stream_context_create` и так разберём пару типов запросов:

  1. file_get_contents('http://google.ru'); 
    - получим содержимое простым GET запросом
  2.  
    $postdata = http_build_query(
    
    	    array(
    
    	        'title' => 'име',
    
    	        'description' => 'какое то описание'
    
    	    )
    
    	);
    
    	
    
    	$opts = array('http' =>
    
    	    array(
    
    	        'method'  => 'POST',
    
    	        'header'  => 'Content-type: application/x-www-form-urlencoded',
    
    	        'content' => $postdata
    
    	    )
    
    	);
    
    	
    
    	$context = stream_context_create($opts);
    
    	
    
    	$result = file_get_contents('http://example.com/api/create_text', false, $context);
    
    	
    
    Таким образом мы пошлём некий POST запрос в метод удалёного api.

Далее нам необходимо расспарсить эти данные, с помощью какого либо встроеного парсера, обычно ответ от апи приходит либо в виде xml, либо в виде json, json просто распарсить с использованием `json_decode($result, true)` не забываем про второй параметр, он указывает что при декодирование вернуть ассоциативный массив. Что предотвращает не ясность, в том что вернёт `json_decode` массив или объект, вы просто ставите `true` и получаете гарантированный массив. Но что делать если пришол xml, с xml тоже довольно просто парситься с помощью `simplexml` но его мы разберём поже в следующих статьях.
     В качестве заключения, будьте проще смотрите и читайте #пробкиобайти.

Ваши комментарии

| Сергей 2017-08-10 08:07:38 |

Ребята, видимо, совсем кладут на элементарное правописание. Изначально хотел написать, что "упрастить" => "упростить", но дочитав до

> "Но что делать если пришол xml, с xml тоже довольно просто парситься с помощью `simplexml` но его мы разберём поже в следующих статьях."

понял, что блог в стиле "как слышу, так и пишу". 

| himysay 2017-08-10 09:54:52 |

Я просто безграммотен в Русском языке, но хочу поделиться своими знаниями с другими.

| Сергей 2017-08-10 20:38:48 |

Честный и позитивный ответ - уж думал, скажете, грамотность - это для задротов. Может английский пойдет получше, тем более - вещь нужная.

| himysay 2017-08-11 13:15:53 |

Английский только письменный, устный есть проблемы из за барьера, волнение какое то настаёт, необходимо время справиться с ним. А я смотрю ты всё таки заходишь и читаешь?

| overt 2017-08-11 13:35:26 |

Когда в чужом городе нужно быстро что-то спросить по-английски, начинаешь лепетать, аж сам удивляешься. 

Читаю - решил поковырять движок сайта на предмет уязвимости из интереса. Фотку пятничных грудей удалил случайно, т.к. php первый раз увидел, извиняйте, хотел всего-то переименовать. Больше на Ютубе слушаю выпуски. Но задумка блога хороша тем, что формат свободный - будут публиковаться те, котому не хочется вылизывать статьи для Хабра, думаю, таких много.

| himysay 2017-08-11 13:39:04 |

А ок, напишешь мне на почту или сдесь в личку об уязвимостях. Я в принципе не фильтрую сдесь ничего, ибо свобода превыше всего. Хотя иногда конечно возникают мысли анально ограничить всё что тут есть :-D

| overt 2017-08-11 13:43:46 |

Ответил в личку.

| overt 2017-08-12 10:58:16 |

> Хотя иногда конечно возникают мысли анально ограничить всё что тут есть :-D

Совсем не ограничивать - тоже крайность. Из-за матов в комментах можно легко попасть в немилость поисковикам.

| Роман 2017-08-12 19:45:40 |

Совсем не ограничивать - тоже крайность. Из-за матов в комментах можно легко попасть в немилость поисковикам.

У меня с поисковиков приходит 2-3 человека в месяц, так что не хочу с этим даже замарачиваться.

| Alexey 2017-09-12 11:00:20 |

blush

Наверх ^