Единый форум поддержки

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



API MyBB

Сообщений 1 страница 20 из 282

1

Эта тема создана для обсуждения будущего API МуВВ.
Подробнее узнать о том, что же такое API - можно в Википедии.

Делаем свои предложения.

Отредактировано RUSSIAN_GOBLIN (Ср, 14 Мар 2012 07:23:47)

0

2

Начнём с глобального  :glasses:

1. API должен отдавать данные в формате JSON.
Соответственно MIME-тип отдаваемых данных -- application/json:

Код:
header('Content-type: application/json');

Преимущества: данный формат наиболее прост в использовании на стороне клиента, небольшой объём "лишних" данных.
Мультиформатность, не дав ничего уникального, может только отдалить во времени создание API.

2. Адрес доступа к API -- /api.php?argument=value
Например для этого форума полный адрес доступа к API  будет таким:

Код:
http://forum.mybb.ru/api.php

Коротко и понятно.

3. В сигнатуре вызова функций, вид данных, который нужно получить, передаётся через аргумент data.
Пример:

Код:
http://forum.mybb.ru/api.php?data=forum

Возвращает информацию о форуме.

4. В целях безопасности экранировать слешами всё опасное в данных возвращаемых сервером клиенту.
Особенно важно экранировать eval() в тексте названий тем, тексте сообщений, логинах юзеров и т.д.

0

3

RUSSIAN_GOBLIN
http://forum.mybb.ru//export.php?type=js&max=10  :glasses: Наверняка отталкивацо придётся отсель, поскольку переделывать парсер - вещь долгая

Отредактировано Deff (Ср, 14 Мар 2012 10:42:35)

0

4

1. Доступ к информации о форуме и его настройках

Аргумент -> data
Значение -> forum

Возвращает строку со всей доступной информацией.

Пример:
Запрос:

Код:
http://forum.mybb.ru/api.php?data=forum

Ответ:

Код:
{"ключ":"значение","ключ":"значение" и т.д.}

Используемые ключи:
boardId - идентификационный номер форума
boardCat - категория форума в каталоге
boardStyle - название стиля форума или custom, если используется свой стиль  (именно стиль в настройках форума - один из готовых или custom, без учёта настройки стиля в профиле, если запрос идёт )
timeForum - часовой пояс форума, если положительный сдвиг, то просто число, если отрицательный - с минусом.
timeCreate - время рождения форума - кол-во сек с начала эпохи UNIX в момент регистрации форума.
title - название форума
allUsers - количество участников
allTopics - количество тем
allPosts - количество сообщений
allCat - количество категорий
allForum - количество форумов
latestUserId - id последнего зарегистрированного юзера
latestUserName - логин последнего зарегистрированного юзера
activeGuest - кол-во гостей онлайн
activeUsers - кол-во пользователей онлайн
activeRecord - рекорд количества посетителей
activeDate - дата рекорда количества посетителей - кол-во сек прошедшие до начала по GMT дня рекорда с начала эпохи UNIX
foundation - 0 если фонд форума не используется, 1 - если используется, но ссылки на главной нет, 2 - используется и ссылка на главной есть
credits - возращает количество средств в фонде форума, или пустую текстовую строку если фонд не используется.
announcement - 0 если объявление не используется, 1 если используется везде, 2 - только на главной
showUserInfo - 0 если инфа об авторе сообщений не отображается, иначе 1
userStyle - 0 если нельзя юзеру выбрать стиль, иначе 1
usersOnline - 0 если не отображается на главной список юзеров онлайн, иначе 1
users24h - 0 если не отображается на главной стата от посещаемости за 24 часа (у партнёров должно быть значение равным 0), иначе 1
usersBirthday - 0 если именниники не отображаются на главной, иначе 1
statsOther - 0 если подробная статистика не отображается на главной, иначе 1
searchForums - 0 если поиск не включён, иначе 1
postRating - 0 если рейтинг поста не отображается, иначе 1
avatars - 0 если аватары не разрешено использовать, иначе 1
subscriptions - 0 если зарещены подписки, иначе 1
relation - 0 если отключена система отношений, 1 если + и -, 2 если сумма + и -, 3 если только +.

Получение только нужных данных
Это возможно при использовании доп. аргументов со значением 1.

Примеры:
Запрос:

Код:
http://forum.mybb.ru/api.php?data=forum&boardId=1

Ответ:

Код:
{"boardId":"5148"}

Запрос:

Код:
http://forum.mybb.ru/api.php?data=forum&boardId=1&boardCat=1

Ответ:

Код:
{"boardId":"5148","boardCat":"3"}

P.S.: конечно можно устроить дискуссию, насчёт того что некоторые значения уже выводятся в Javascript-переменных форума.
Но я делаю расчёт на использование доступа к инфе со сторонних сайтов. Мне бы пригодилось для сайта сервиса, т.к. сейчас приходится cUrl'ом получать контент страницы форума и из исходного кода выпарсивать эти самые Javascript-переменные, что естественно создаёт  на сервера МуВВ лишнюю нагрузку - не нужную ни Admin'y, ни мне.

0

5

RUSSIAN_GOBLIN написал(а):

P.S.: конечно можно устроить дискуссию, насчёт того что некоторые значения уже выводятся в Javascript-переменных форума.
Но я делаю расчёт на использование доступа к инфе со сторонних сайтов.

Ну как раз на счёт этого дискусий нет...

Нужен как один из основных вариантов

а) Выдача контента по запросу адрес + полный селектор

Ксать выдача контента <head> на автомате решает и Твою задачу (посколь там эти переменные есть

b)  было  бы интересным решения Post аякс запроса на запись.

Deff написал(а):

Включающий по минимуму: -  Создание темы и отправка сообщения в тему от Имени Forum_Bota, с возможностью - правки-редактирования данного сообщения(при редактировании отдаём полный адрес поста http://forum.mybb.ru/edit.php?id=746311, данное новведение позволило бы реализовать
а) Нормальный магазин форум - принадлежностей
b) Расширенную статистику
с) Наградную страницу пользователя

Думаю запрос максимум один раз за одну текущую сессию одного пользователя в общей сумме при реализации  всех хотелок...

Отредактировано Deff (Ср, 14 Мар 2012 12:47:25)

0

6

RUSSIAN_GOBLIN написал(а):

cUrl'ом получать контент страницы форума и из исходного кода выпарсивать эти самые Javascript-переменные,

Распарсивание переменных у юзера в три строки
Тьву показать распарсивание <head> ? (при получении html контентом ?

0

7

Deff написал(а):

Выдача контента по запросу адрес + полный селектор

Трудно реализуемо... и нагрузка при этом будет не маленькая.
Пришлось бы на сервере формировать страницу, распарсить её для получения контента селектора и затем отдать контент.

Deff написал(а):

Ксать выдача контента <head> на автомате решает и Твою задачу (посколь там эти переменные есть

Далеко не все переменные. Отсутствуют: кол-во сообщений на форуме, участников, последний реганый юзер, кого сколько онлайн, рекорд посещаловки. К тому же при этом зря куча информации будет изыматься из БД для формирования содержимого <head> и бесполезно отдаваться сервером МуВВ и не менее бессмысленно приниматься сервером хостинга моего сайта.

Сегодня, если не усну)) напишу желаемое про доступ к инфе юзеров. Как грится - ждитя   http://i023.radikal.ru/0806/0e/0f0c289d656c.gif

0

8

RUSSIAN_GOBLIN написал(а):

Пришлось бы на сервере формировать страницу, распарсить её для получения контента селектора и затем отдать контент.

А куды децо от уже реализованных скриптами
а)Первый Пост закрепляемый на всех страницах
b)Вывод опросов на главную
с) Инфоблок Кто-где
d) Cписок ботов на главной и в Активных

1. Они уже парсяцо сервером и плюс требуют дополнительного обмена и плюс требуют в итоге дополнительного запроса для избегания глюка в Активных пользователях

Вариант с - парсит несколько страниц для изъятия картинки аватара в активных профилях

Отредактировано Deff (Ср, 14 Мар 2012 13:56:51)

0

9

Deff написал(а):

Распарсивание переменных у юзера в три строки
Тьву показать распарсивание <head> ? (при получении html контентом ?

Ыыыыы
Я ж это ещё в прошлом году реализовал на php :)
На js тож могу сделать, но лень  :playful:

В получении содержимого тега <head> нет никакой необходимости.
И вообще тебе следует почитать про API вебсайтов, например Вконтакте: http://vk.com/developers.php?oid=-1&amp;p=Описание_методов_API
Чтобы понять как эти самые интерфейсы программирования функционируют.
Тогда станет ясно что идея получения содержимого тега <head> просто бредовая  :blush:

0

10

RUSSIAN_GOBLIN
Туть итоговый резъюм(собственно почему не сильно приветсвовал эту тему)
вряд ли будет реализовано в корне отличное от вышеприведенного запроса новых сообщений, поэтому нагружая наше громадьё - ток отдаляем реализацию... тяжело сразу делать баллистическую ракету - не сделав хотя бы перевод нынешних реализаций скриптами в менеее ёмкую работу сервера...

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

Отредактировано Deff (Ср, 14 Мар 2012 14:05:53)

0

11

Deff написал(а):

А куды децо от уже реализованных скриптами

В топку эти скрипты.

Я потом описание остального API напишу. Но главное, если он (API) в желаемом мною виде реализован, можно будет написать скрипты полностью повторяющие функционал - первого сообщения, кто где, опросы на главной список ботов на главной и в активных.

И эти скрипты уже не будут столько жестоко относится к серверам МуВВ и каналам, что ведут от них в мировую паутинку веба.

Кстати, Ромыч сможет написать свой скрипт, отображающий кто оценил пост (показать аватарку, ник и саму оценку т.е. +1 или -1)

0

12

RUSSIAN_GOBLIN
В топку, не в топку - скрипты пока никуда не денуться и та нагрузка - скриптовая по аякс-запросам - остаётся и плюс добавляется новым API - cмысл Админу напрягацо ?

Отредактировано Deff (Ср, 14 Мар 2012 14:09:31)

0

13

вот прекрасный пример сайта, где широко применяются ajax запросы, при наведении курсора, на любую ссылку (трек песни, пользователь онлайн и т.д.)  - http://promodj.com/

RUSSIAN_GOBLIN написал(а):

boardId - идентификационный номер форума

думаю что должен быть отдельный для первого поста темы

First_boardId - идентификационный номер  первого сообщения в топике форума

0

14

Romych
:glasses: Ксать реализация

Deff написал(а):

было  бы интересным решения Post аякс запроса на запись.

Средствами API или аякс - была бы занчительно интересней как для оценки постов(можно было бы дописать и "за что" как у DUKI, так и

данное новведение позволило бы реализовать
а) Нормальный магазин форум - принадлежностей
b) Расширенную статистику
с) Наградную страницу пользователя

Отредактировано Deff (Ср, 14 Мар 2012 14:26:15)

0

15

Deff написал(а):

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

Аякс (в том виде, в котором он сейас используется на МуВВ) - зло, он приводит к росту нагрузок, ведь для запроса аякса формируется целая страница, как и для обычного юзера.
Использовать API выгоднее, ведь делается запрос (один или несколько) к БД и отдаются только нужные данные. И лучше сделать этот API с очень широкими возможностями, чтобы впоследствии не использовать аякс для какой-нить ерунды или не просить 10 раз в день Admin'а добавить новый метод в API.

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

Наша (тех, кто делает скрипты) задача - дать подробное описание желаемого API.
Но этот API должен быть продуманным и грамотным,  чтобы и скриптёрам было удобно и нагрузка на тех. средства МуВВ была низкой.

Добавлено:

Romych, в другом значении аргумента data будет получение инфы о первом посте темы.
Это же был доступ к инфе о форуме в целом  ;)

Отредактировано RUSSIAN_GOBLIN (Ср, 14 Мар 2012 14:40:02)

0

16

RUSSIAN_GOBLIN написал(а):

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

RUSSIAN_GOBLIN написал(а):

В топку эти скрипты.

Дык Эти скрипты подразумевают API по селектору, и дальнейшее отсутствие наращивание аякс запросов тоже

Так шо формируй иную стратегию стандартов - Очевидно
a) Запрос контента по селектору
b) Запрос типовых переменных
с) Создание темы и запись/редактирование сообщения (от Имени Forum_Bota
d) Cоздание единого файла дополнительных глобальных переменных текущего форума

Отредактировано Deff (Ср, 14 Мар 2012 14:44:06)

0

17

RUSSIAN_GOBLIN написал(а):

Аякс - зло, он приводит к росту нагрузок,

Не факт, особенно ежли постоянный запрос js или css файла, поскольку кешируецо, да и XML, html  с одним адресом тож
Так что ежли за сессию два -три запроса - нагрузка возрастает не настолько сильно, соображения по нагрузке от текущих скриптов - уже были высказаны

Отредактировано Deff (Ср, 14 Мар 2012 15:00:56)

0

18

Deff написал(а):

Так шо формируй иную стратегию стандартов - Очевидно

Лучше ты свою страту сформулируй, и опубликуй здесь, а затем посмотрим что скажет Admin о твоём варианте и моём.

Deff написал(а):

В топку, не в топку - скрипты пока никуда не денуться и та нагрузка - скриптовая по аякс-запросам - остаётся и плюс добавляется новым API - cмысл Админу напрягацо ?

Из-за распространения этих скриптов растёт нагрузка в основном зря.

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

И вообще - новые скрипты станет проще создавать :)

Опять же, если будет реализовано API в желаемом мной виде, я сделаю цветовыделение логинов по группам  :cool:

0

19

RUSSIAN_GOBLIN

RUSSIAN_GOBLIN написал(а):

Из-за распространения этих скриптов растёт нагрузка в основном зря.

Дык я про что и говорю, что если хошь сократить аякс при создании будущих скриптов - один из основных запросов API - запрос по селектору

Далее - посколь файлы в Админке ограничены - записывать можно ток в тему, для этого нун API на запись

Не будет записи - будет извернутый многофреймовый записывающий  псевдоаякс

Отредактировано Deff (Ср, 14 Мар 2012 15:07:30)

0

20

Deff написал(а):

Не будет записи

Записи не будет скорей всего, разве что в форум который открыт на запись для гостей.
И я не сторонник наличия в API возможности создания (редактирования) тем, опросов, сообщений...
Мне видится это уязвимостью, которую смогли бы использовать злоумышленникии и/или спамеры.

Отредактировано RUSSIAN_GOBLIN (Ср, 14 Мар 2012 16:13:28)

0