Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.78/130: Рейтинг темы: голосов - 130, средняя оценка - 4.78
9 / 7 / 0
Регистрация: 09.08.2012
Сообщений: 79

Как работать с api?

10.10.2014, 04:02. Показов 24119. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Мне нужно научиться взаимодействовать с различными интернет сервисами при помощи их API, но проблема в том, что я просто не очень понимаю как это делается. Чего-то не достает в понимании, не хватает основ. Не могли бы вы написать что-то нибудь на эту тему или подкинуть статей для начинающих в PHP по этой теме.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.10.2014, 04:02
Ответы с готовыми решениями:

Как работать с API ?!
как работать с API? Ничего не пойму, открываю к примеру: ...

Как работать с Api в VC++???
Какие инклуда надо включать и т.д.? Заранее спасибо!

Как работать с API VK / Facebook?
Добрый день, хочу сделать приложение про универ, в общем разобрался как что делать но есть несколько вопросов, так как я в этом деле...

25
 Аватар для UchihaSV
285 / 234 / 113
Регистрация: 08.06.2013
Сообщений: 725
10.10.2014, 06:23
У каждого сервиса апи различаются, но принцип у них 1 и тот-же:
ты отправляешь какие-либо данные на сервис и он тебе отсылает ответ.
Как это технически реализовать, можно прочитать в док-ции апи сервиса. И стоит сказать, что апи могут не давать готовый код для взаимодействия с ними, а лишь объясняют, что должно быть отправлено и как(условия). То как это будет выглядить в коде это твоя проблема и не зависит от яз. программирования.
0
9 / 7 / 0
Регистрация: 09.08.2012
Сообщений: 79
10.10.2014, 09:26  [ТС]
А можно какие нибудь примеры работы?
0
 Аватар для solar_wind
770 / 760 / 59
Регистрация: 06.07.2009
Сообщений: 3,021
10.10.2014, 09:32
Megatron13,
Цитата Сообщение от Megatron13 Посмотреть сообщение
А можно какие нибудь примеры работы?
Да пожалуйста....только что это тебе даст.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<script src="//vk.com/js/api/openapi.js" type="text/javascript"></script>
 
<div id="login_button" onclick="VK.Auth.login(authInfo);"></div>
 
<script language="javascript">
VK.init({
  apiId: ВАШ_API_ID
});
function authInfo(response) {
  if (response.session) {
    alert('user: '+response.session.mid);
  } else {
    alert('not auth');
  }
}
VK.Auth.getLoginStatus(authInfo);
VK.UI.button('login_button');
</script>
Каждый конкретный api имеет свои особенности....
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
10.10.2014, 14:13
Megatron13, Вы знаете что такое CURL, например. Если да - читайте дальше, если нет - перейдите на сайт php и прочитайте сначала о CURL (на его основе я попробую объяснить).
Значит так, есть сервис, который имеет свой API. Что он делает? Он создаёт на своём сайте скрипт php, например. Этот скрипт принимает обычные POST и GET запросы. Он ничем не отличается от обычных скриптов, которые бы отвечали на запросы из браузера. Итак, значит разобрались, на том сайте, который предоставляет API ничего заумного нет, обычный скрипт, принимающий HTTP запросы (как будто из обычно браузера).
Теперь, чтобы отправлять этому скрипту запросы нужен ещё один скрипт (его Вы уже размещаете у СЕБЯ на сайте). Что это за скрипт такой? Тоже обыкновенный скрипт, который использует CURL для отправки запросов тому скрипту, который на том сайте, что предоставляет API. В таком скрипте, как правило, есть код, который запускает функции CURL'а и CURL отправляет обычный HTTP запрос скрипту на том сайте. Но отправляет он данные не "от балды", а те, о которых известно, что тот скрипт их примет. Немного запутанно объясняю...
Например, разработчика скрипта, принимающего запросы решил, что его скрипт будет принимать такие переменные GET или POST:
key
message
phone
А Ваш скрипт должен отправлять данные именно с такими ключами GET или POST, иначе тот отвергнет запрос.
Попытался объяснить самыми простыми словами...
1
0 / 0 / 0
Регистрация: 23.04.2015
Сообщений: 5
23.06.2017, 16:22
Вопрос.
Немного о себе:
Я не программист, и заказ услуг программиста в данном конкретном случае не совсем уместен.
Но моей логики хватает чтобы в Екселе наворотить что угодно (опять же, кроме VBA).

Сам вопрос:
Хочу научиться писать код для работы с API, а лучше всего если даже есть софт, который напишет код за тебя.
Сама задача простая, нужно получать информацию по доступным методам в API, и если, например, какое то условия не выполняется делать одно, если условие выполняется - делать второе и третье.

Подскажите с чего начать ознакомление, если готовых вариантов нет. И в сторону каких языков/программ смотреть, где это будет проще всего реализовать новичку нулю. PHP, или через excel+VBA или еще что то?
Спасибо.
0
2 / 2 / 0
Регистрация: 22.06.2018
Сообщений: 15
15.07.2018, 01:26
Зачем для работы с API привлекать такого монстра как curl, который ещё при этом может отсуствовать в наборе библиотек конкретной сборки php!?
Для GET запроса достаточно:
$data = file_get_contents('http://site.com/?x=1&some=hello');
Для POST нужно добавить контекст.

Вобще, кто-то может обьяснить зачем в php использовать curl, если имеется встроеный инструмент в виде функции file_get_contents?
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
15.07.2018, 11:16
Цитата Сообщение от ruflash Посмотреть сообщение
Зачем для работы с API привлекать такого монстра как curl, который ещё при этом может отсуствовать в наборе библиотек конкретной сборки php!?
Так в конкретной сборке php может и allow_url_fopen быть отключен и тогда file_get_contents как http клиент не будет работать. А так curl банально удобнее, если идет речь о чем-то сложнее GET запроса.

А еще удобнее взять guzzle

Добавлено через 20 минут
ruflash, зачем темы 4х летней давности поднимать?
0
2 / 2 / 0
Регистрация: 22.06.2018
Сообщений: 15
15.07.2018, 11:18
Цитата Сообщение от Jewbacabra Посмотреть сообщение
ruflash, зачем темы 4х летней давности поднимать?
Не думаю, что тема потеряла свою актуальность за 4ре года. Я попал на неё из поиска. Для меня тема была вчерашней.
0
15.07.2018, 11:23

Не по теме:

Цитата Сообщение от ruflash Посмотреть сообщение
Не думаю, что тема потеряла свою актуальность за 4ре года
Как 4 года не было конкретного вопроса, так в общем и сейчас осталось

0
2 / 2 / 0
Регистрация: 22.06.2018
Сообщений: 15
15.07.2018, 12:27
Jewbacabra, Всё же работа file_get_contents вероятнее чем curl. curl банально может быть не установлен так же php нужен его драйвер, а allow_url_fopen можно просто включить. Отсюда встроеная функция универсальнее.

Цитата Сообщение от Jewbacabra Посмотреть сообщение
А так curl банально удобнее, если идет речь о чем-то сложнее GET запроса.
Субъективно. Не вежу особых удобств.
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
15.07.2018, 13:01
Цитата Сообщение от ruflash Посмотреть сообщение
Субъективно. Не вежу особых удобств.
Попробуй отправить PUT запрос, получив в ответ статус 400 с непустым телом (вполне стандартный кейс для работы с api). И сравнить реализацию этого 3 способами: file_get_contents, curl и guzzle.
И еще такой момент: curl будет использовать соединение повторно при следующих запросах. Будет ли file_get_contents?
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
15.07.2018, 13:10
Цитата Сообщение от ruflash Посмотреть сообщение
curl банально может быть не установлен так же php нужен его драйвер
А ещё хостинг может не поддерживать PHP вообще. Меняйте хостинг.
CURL слишком популярен, чтобы хостер мог его установку проигнорировать.
0
2 / 2 / 0
Регистрация: 22.06.2018
Сообщений: 15
15.07.2018, 15:49
Цитата Сообщение от Para bellum Посмотреть сообщение
А ещё хостинг может не поддерживать PHP вообще. Меняйте хостинг.
CURL слишком популярен, чтобы хостер мог его установку проигнорировать.
curl не идёт в стандартном наборе большей части дистрибутивов Linux. Я не говрю уже про Windows. Это факт.
Когда установлен php, то уже есть гарантии работы функций стандартной библиотеки.
Рассуждать, что curl популярен равносильно утверждениям, что популярен браузер хром, который не идёт по умолчанию ни с одним сорвременным дистрибутивом ОС. И то и то верно, но что одно, что другое не установлено по умолчанию, а так же не является панацеей.
Плохой тон разбрасываться лишними зависимостями (особенно просто так, по привычке), их список может очень распухнуть, если вы создаёте платный или даже опенсорс продукт. подумайте сами, вы и ваш конкурент дпже по опенсорсу пишете списки зависиморстей в реадми по работе скрипта, что делает большинство - они при равных возможностях просто выберут более универсальное решение.

Хороший тон для опытного программиста - это стремиться уменьшать как кол-во кода, так и кол-во зависимостей, если зависимости не упрощают текущий код. В данном случае мы идём в сторону упрощения с точки зрения зависимостей.
0
 Аватар для Зверушь
461 / 369 / 94
Регистрация: 01.05.2010
Сообщений: 1,761
16.07.2018, 17:44
Посылать подальше те хостинги, где не поддерживается курл.
Курл хорош тем, что можно отправить кучу своих заголовков в запросе, если надо. Так же можно заюзать его через прокси сервер. С file_get_contents такого на сколько я знаю не сделаешь. Но оно и не надо для нормальных апи. В моем последнем проекте все было довольно просто:
PHP
1
$data = json_decode(file_get_contents($url));
Curl же я использовал только для парсеров.
0
16.07.2018, 17:45

Не по теме:

Цитата Сообщение от Зверушь Посмотреть сообщение
С file_get_contents такого на сколько я знаю не сделаешь
Сделаешь, но через одно место.

0
2 / 2 / 0
Регистрация: 22.06.2018
Сообщений: 15
16.07.2018, 18:00
Цитата Сообщение от Зверушь Посмотреть сообщение
Курл хорош тем, что можно отправить кучу своих заголовков в запросе, если надо. Так же можно заюзать его через прокси сервер. С file_get_contents такого на сколько я знаю не сделаешь.
Элементарно:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
// Создаем поток
$opts = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: en\r\n" .
              "Cookie: foo=bar\r\n"
  )
);
 
$context = stream_context_create($opts);
 
// Открываем файл с помощью установленных выше HTTP-заголовков
$file = file_get_contents('http://www.example.com/', false, $context);
?>
Вот на всякий случай ссылка на документацию: http://php.net/manual/ru/funct... ntents.php
Там так же настраивается useragent и прочие тонкости. Всё в виде обычного php массива ключ_опция => значение

Цитата Сообщение от Jewbacabra Посмотреть сообщение
Сделаешь, но через одно место.
Чем пример выше сложнее курловских заготовок? Тот же массив с настроками запроса.
1
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
16.07.2018, 21:28
ruflash,
Цитата Сообщение от Jewbacabra Посмотреть сообщение
Попробуй отправить PUT запрос, получив в ответ статус 400 с непустым телом (вполне стандартный кейс для работы с api). И сравнить реализацию этого 3 способами: file_get_contents, curl и guzzle.
И еще такой момент: curl будет использовать соединение повторно при следующих запросах. Будет ли file_get_contents?
0
2 / 2 / 0
Регистрация: 22.06.2018
Сообщений: 15
16.07.2018, 22:16
Цитата Сообщение от Jewbacabra Посмотреть сообщение
Попробуй отправить PUT запрос, получив в ответ статус 400 с непустым телом (вполне стандартный кейс для работы с api).
Где этот кейс стандартный? Почему при получении ошибки нас должно интересовать тело запроса? Сама 400 ошибка разве не говорит об обратном?!

В остальном, все PUT, DELETE нормально отрабатываются. Там где ошибка подразумевает возврат тела документа, там он возвращается. Вцелом коды делятся на 5 основных групп:
1** – информационные,
2** – положительные в случае успешного запроса,
3** – полностью незавершённые запросы,
4** – клиентские ошибки запросов,
5** – серверные недочёты.

Для ошибки 400 в некоторых документациях указывается на то, что Клиенту НЕ СЛЕДУЕТ повторять запрос без модификаций. Это я к тому, что curl ещё и может отправить запрос повторно, судя по ваши словам
Цитата Сообщение от Jewbacabra Посмотреть сообщение
И еще такой момент: curl будет использовать соединение повторно при следующих запросах.
И правда, какому серверу понравится брут ошибочного запроса.
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
16.07.2018, 22:36
Цитата Сообщение от ruflash Посмотреть сообщение
Где этот кейс стандартный?
Работа с любым api
Цитата Сообщение от ruflash Посмотреть сообщение
Почему при получении ошибки нас должно интересовать тело запросаответа?
Чтобы узнать в чем именно ошибка
Цитата Сообщение от ruflash Посмотреть сообщение
Сама 400 ошибка разве не говорит об обратном?!
Нет, слишком мало информации. Да хотябы как просто получить номер ошибки?
Цитата Сообщение от ruflash Посмотреть сообщение
Там где ошибка подразумевает возврат тела документа, там он возвращается
Так я хочу увидеть пример.
Цитата Сообщение от ruflash Посмотреть сообщение
Это я к тому, что curl ещё и может отправить запрос повторно, судя по ваши словам
Это про что и по каким конкретно словам.
Цитата Сообщение от ruflash Посмотреть сообщение
И правда, какому серверу понравится брут ошибочного запроса.
ЩИТО? Какой брут.
Теоретическое отступление: протокол http в качестве транспорта использует протокол tcp. Так вот, с помощью curl я могу открыть 1 tcp соединение и использовать его для нескольких разных запросов. Что так умеет file_get_contents я сомневаюсь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.07.2018, 22:36
Помогаю со студенческими работами здесь

Как из C# работать с rest api?
Здравствуйте. Есть ли у кого какие примеры как из C# работать с rest api. Я в этом полный часник. В api есть пример отправки запроса из...

Объясните как работать с API
Всем привет! Есть интернет магазин, при оформлении заказа все последующие действия банально сводятся к отправке письма с заказом...

Как работать с JSON API?
Мне нужно получить список всех профессиональных областей отсюда : http://api.hh.ru/1/json/#proffields Я для этого использую такой код: ...

Как работать с API Platform
Парни всем привет! Подскажите вот какой момент. Мне нужно написать плагин, который по клику на кнопку будет создавать посты с книгами в...

Android Studio не дает работать с API 8 без установленного API 21
Удалил все не интересующие меня библиотеки и поставил только API Level 8. Но при создании приложения вылезает куча ошибок таких как: Что...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru