Модератор форума: JonMagon  
Сообщество uCoz » Мастерская uCoz » Использование PHP и API на uCoz » Базовое API на uCoz
Базовое API на uCoz
Модератор форума
Сообщение # 1 | 15:36:48
В марте 2011 в системе uCoz появилась возможность использовать функционал API.

АPI - это бесплатная возможность, её нужно просто активировать в Основных настройках сайта.

Инструкция по включению и использованию данной возможности находится ЗДЕСЬ.


В этой теме разрешается обсуждать данную возможность, делиться опытом, вносить конструктивные предложения.

ОБНОВЛЕНИЯ

  • [13.05.2011] Добавлена возможность использовать ключ (API key) для базового API.

    Данная возможность позволяет разрешить использование API только для тех, кто знает ключ. Для всех остальных API не будет работать. Включить эту возможность можно в панели управления в разделе “Настройки” → “Общие настройки” → “Использовать API key”. Ключ генерируется автоматически.

    Если вы захотите изменить уже существующий ключ, то отключите и включите заново эту опцию, затем сохраните изменения.

    Использовать API при наличии ключа нужно посредством GET-запроса следующим образом:
    http://SITE_ADDRESS/api/MODULENAME/ANYRELPATH?apikey=APIKEY


JonMagon
Сообщений: 2291
Репутация: 1828

Сообщение # 181 | 12:26:47
Quote (Илуватар)
Скажите пожалуйста, можно ли через апи получить список всех зарегистрированных пользователей на сайте?

Получаете общее число пользователей и циклом for через API получаете нужную информацию о каждом.

Quote (Илуватар)
Конкретно интересует, что скрывается за "*" в шаблоне "http://USER_SITE/api/index/15-*-*-*-*"?

В каком шаблоне? Вы о чем?

Не оказываю поддержку посредством ЛС/ICQ/Skype/AIM/XMPP/E-mail.
Илуватар
Сообщений: 3
Репутация: 0

Сообщение # 182 | 13:22:18
Quote (JonMagon)
Получаете общее число пользователей и циклом for через API получаете нужную информацию о каждом.

Еще один нубский вопрос тогда: как получить общее число пользователей? )

Quote (JonMagon)
В каком шаблоне? Вы о чем?

Шаблоном я назвал строку вида "http://USER_SITE/api/index/15-*-*-*-*". Маска URL если хотите. Меня интересует, что скрывается под звездочками.
К примеру, понятно что" http://USER_SITE/api/index/15-1" - это первая страница списка пользователей. А вот что означают следующие параметры - непонятно. Поиском по форуму не нашел, поэтому если вы ткнете в место, где это разжевывается или объясните, то буду очень признателен.

И для полноты картины объясню часть своей задачи. Хочу с помощью JS, по возможности одним запросом, получить список всех пользователей. Как получить несколькими запросами - понятно. Но если количество пользователей велико, то при таком решении бан по IP не заставит себя ждать.
sch779
Сообщений: 703
Репутация: 348

Сообщение # 183 | 14:47:43
Quote (Илуватар)
по возможности одним запросом, получить список всех пользователей

API построено таким образом, что само ограничивает объем информации, возвращаемой одним запросом.
В некоторых модулях кол-во записей на странице связано с соответствующим параметром в настройках этого модуля в админпанели.
Для списка пользователей такого параметра в настройках нет. Поэтому через API Ваш запрос реализовать нельзя.

Можно без API - прямым запросом на форум Вашего сайта:
Code

$.post("/forum/",{a:35, s:1, res=100});

Возвратит стандартную страницу сайта со списком участников форума, что эквивалентно списку всех пользователей, зарегестрированных на сайте.
Здесь, res - кол-во пользователей, возвращаемых данным запросом.
Можно использовать еще некоторые параметры для фильтрации списка - более подробно можно посмотреть в исходнике страницы, которая возвращается по ссылке "Участники" на любой из страниц форума. Там в конце есть формочка, которая и посылает запрос с условиями фильтра. В ней значение res ограничено 100 - нужно попробовать большее значение - возможно и выдаст именно столько, сколько запросиш.

Следует учесть, что возвращает именно страницу в html-коде - соответственно, прийдется использовать несколько другие приемы получения нужной информации из DOM-элементов.
Ну и, естественно, возвращаемый объем данных будет побольше, чем через API.
JonMagon
Сообщений: 2291
Репутация: 1828

Сообщение # 184 | 17:44:41
Quote (Илуватар)
Еще один нубский вопрос тогда: как получить общее число пользователей? )

Вывести значение на какой-либо странице и скриптом через регулярки получать это значение.

Quote (Илуватар)
Шаблоном я назвал строку вида "http://USER_SITE/api/index/15-*-*-*-*"

Понятия не имею где вы взяли эту строку.

Не оказываю поддержку посредством ЛС/ICQ/Skype/AIM/XMPP/E-mail.
sch779
Сообщений: 703
Репутация: 348

Сообщение # 185 | 21:46:47
Quote (JonMagon)
Понятия не имею где вы взяли эту строку.

Загляни в шапку этой темы - там, в описании API, все шаблоны запросов оформлены таким образом.
При чем, как справедливо заметил автор вопроса, не дано никакого описания, какие параметры должны быть вместо звездочек - приходится самому методом "тыка" искать правильные запросы.

Я, правда, поступаю по другому - открываю на сайте нужную страницу и просто добавляю в url-адрес "/api/" после имени домена - если запрос правильный, то в браузер будет возвращен нужный xml-код.
Таким образом, кстати, можно обнаружить запросы, которые API обрабатывает, но в доке не описаны!
Сообщение отредактировал sch779 - Воскресенье, 02 Сен 2012, 21:47:48
Илуватар
Сообщений: 3
Репутация: 0

Сообщение # 186 | 23:13:01
JonMagon, sch779 спасибо за ваши ответы!

Quote (sch779)
Там в конце есть формочка, которая и посылает запрос с условиями фильтра.

Такая же формочка есть и на страницах вида /index/15-*. Собственно использование post-запроса с параметрами из этой формы было первоначальным планом. Но, к сожалению, в html-виде на странице не выводится необходимая мне информация о пользователе. Например адрес. Видимо таки придется делать несколько ассинхронных запросов к api и результат кешировать в localStorage, дабы не создавать большой поток запросов и не получать банов. Спасибо, вы помогли мне определиться в дальнейших действиях.

Quote (JonMagon)
Понятия не имею где вы взяли эту строку.

Как верно отметил sch779, взял из документации по api.
sch779
Сообщений: 703
Репутация: 348

Сообщение # 187 | 12:41:34
Quote (Илуватар)
результат кешировать в localStorage, дабы не создавать большой поток запросов

Вот, кстати, тоже "белое пятно" в этом API! Непонятно - каждый API-запрос явно "дергает" базу сайта или же существует некие информеры для API, из которых и делается выборка нужных данных? Если второе, то бана быть не должно - информеры, как раз, и введены для уменьшения нагрузки на сервера.

Я, кстати, несколько раз замечал, что после удаления некоторых постов на форуме API-запросы, формирующие список последних постов нужных форумов, некоторое время возвращали удаленные посты!
Victor
Сообщений: 1141
Репутация: 576

Сообщение # 188 | 18:01:40
sch779, вероятнее всего, это было кэширование. При выводе данных из БД есть кэширование на короткий период времени (как правило, меньше 10 секунд). Есть это не только в АПИ, но и на обычных страницах.
sch779
Сообщений: 703
Репутация: 348

Сообщение # 189 | 19:14:10
О! Сюда, оказывается, заглядывают разработчики системы! :o

Спасибо за закрытие одного из "белых пятен" API!
А что по поводу звездочек в шаблонах запросов?
При чем, как я убедился - практически ни в одном запросе не обязательно задавать все указанные в шаблоне значения!
SOFTOLAB_COM
Сообщений: 1363
Репутация: 777

Сообщение # 190 | 01:59:12
Victor, можно надеяться на ввод новых параметров для вывода в api?
Очень не достает некоторых данных на странице пользователя, а так же на страницах материалов различных модулей.

Видел что ввели только ссылку на аватар для страницы пользователя и все, на этом ввод новых переменных закончен?

Благодарности можно оставить — в репутации.
Помощью в ЛС не занимаюсь, есть форум.
Занимаюсь сайтами на платной основе.
Шаманю на php и mysql с использованием бубна 80 lvl.
Victor
Сообщений: 1141
Репутация: 576

Сообщение # 191 | 15:35:55
sch779, SOFTOLAB_COM, в обозримом будущем планируется масштабное обновление АПИ. В частности появится возможность использовать его не только как read-only.
sch779
Сообщений: 703
Репутация: 348

Сообщение # 192 | 21:13:42
Quote (Victor)
В частности появится возможность использовать его не только как read-only.

Ну, это мы и сейчас умеем через post-запрос делать! :p
Более того - прекрасно можно работать даже в самой панели адмена - управлять, к примеру, форумами или категориями в различных модулях.
Правда, нужно предварительно войти как админ. :D

Хотя, конечно, через документированную функцию делать все это более правильно и надежнее!
SOFTOLAB_COM
Сообщений: 1363
Репутация: 777

Сообщение # 193 | 06:42:31
Victor, пробовал сделать api для php сервера прямо на странице материала, админ бар гадкий мешает, мож какие варианты еще есть?

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

Благодарности можно оставить — в репутации.
Помощью в ЛС не занимаюсь, есть форум.
Занимаюсь сайтами на платной основе.
Шаманю на php и mysql с использованием бубна 80 lvl.
JonMagon
Сообщений: 2291
Репутация: 1828

Сообщение # 194 | 13:17:35
SOFTOLAB_COM, админ-бар легко убирается:
В любое место вставляете код
Code
<? substr($ADMIN_BAR$, 0, 0) ?>

Не оказываю поддержку посредством ЛС/ICQ/Skype/AIM/XMPP/E-mail.
Victor
Сообщений: 1141
Репутация: 576

Сообщение # 195 | 17:36:44
Quote (sch779)
Ну, это мы и сейчас умеем через post-запрос делать!
И как? Удобно? :)
Сообщество uCoz » Мастерская uCoz » Использование PHP и API на uCoz » Базовое API на uCoz
Поиск: