Эта тема создана для обсуждения будущего API МуВВ.
Подробнее узнать о том, что же такое API - можно в Википедии.
Делаем свои предложения.
Отредактировано RUSSIAN_GOBLIN (Ср, 14 Мар 2012 07:23:47)
Единый форум поддержки |
Привет, Гость! Войдите или зарегистрируйтесь.
Вы здесь » Единый форум поддержки » Сделаем сервис лучше » API MyBB
Эта тема создана для обсуждения будущего API МуВВ.
Подробнее узнать о том, что же такое API - можно в Википедии.
Делаем свои предложения.
Отредактировано RUSSIAN_GOBLIN (Ср, 14 Мар 2012 07:23:47)
Начнём с глобального
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() в тексте названий тем, тексте сообщений, логинах юзеров и т.д.
RUSSIAN_GOBLIN
http://forum.mybb.ru//export.php?type=js&max=10 Наверняка отталкивацо придётся отсель, поскольку переделывать парсер - вещь долгая
Отредактировано Deff (Ср, 14 Мар 2012 10:42:35)
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, ни мне.
P.S.: конечно можно устроить дискуссию, насчёт того что некоторые значения уже выводятся в Javascript-переменных форума.
Но я делаю расчёт на использование доступа к инфе со сторонних сайтов.
Ну как раз на счёт этого дискусий нет...
Нужен как один из основных вариантов
а) Выдача контента по запросу адрес + полный селектор
Ксать выдача контента <head> на автомате решает и Твою задачу (посколь там эти переменные есть
b) было бы интересным решения Post аякс запроса на запись.
Включающий по минимуму: - Создание темы и отправка сообщения в тему от Имени Forum_Bota, с возможностью - правки-редактирования данного сообщения(при редактировании отдаём полный адрес поста http://forum.mybb.ru/edit.php?id=746311, данное новведение позволило бы реализовать
а) Нормальный магазин форум - принадлежностей
b) Расширенную статистику
с) Наградную страницу пользователяДумаю запрос максимум один раз за одну текущую сессию одного пользователя в общей сумме при реализации всех хотелок...
Отредактировано Deff (Ср, 14 Мар 2012 12:47:25)
cUrl'ом получать контент страницы форума и из исходного кода выпарсивать эти самые Javascript-переменные,
Распарсивание переменных у юзера в три строки
Тьву показать распарсивание <head> ? (при получении html контентом ?
Выдача контента по запросу адрес + полный селектор
Трудно реализуемо... и нагрузка при этом будет не маленькая.
Пришлось бы на сервере формировать страницу, распарсить её для получения контента селектора и затем отдать контент.
Ксать выдача контента <head> на автомате решает и Твою задачу (посколь там эти переменные есть
Далеко не все переменные. Отсутствуют: кол-во сообщений на форуме, участников, последний реганый юзер, кого сколько онлайн, рекорд посещаловки. К тому же при этом зря куча информации будет изыматься из БД для формирования содержимого <head> и бесполезно отдаваться сервером МуВВ и не менее бессмысленно приниматься сервером хостинга моего сайта.
Сегодня, если не усну)) напишу желаемое про доступ к инфе юзеров. Как грится - ждитя
Пришлось бы на сервере формировать страницу, распарсить её для получения контента селектора и затем отдать контент.
А куды децо от уже реализованных скриптами
а)Первый Пост закрепляемый на всех страницах
b)Вывод опросов на главную
с) Инфоблок Кто-где
d) Cписок ботов на главной и в Активных
1. Они уже парсяцо сервером и плюс требуют дополнительного обмена и плюс требуют в итоге дополнительного запроса для избегания глюка в Активных пользователях
Вариант с - парсит несколько страниц для изъятия картинки аватара в активных профилях
Отредактировано Deff (Ср, 14 Мар 2012 13:56:51)
Распарсивание переменных у юзера в три строки
Тьву показать распарсивание <head> ? (при получении html контентом ?
Ыыыыы
Я ж это ещё в прошлом году реализовал на php
На js тож могу сделать, но лень
В получении содержимого тега <head> нет никакой необходимости.
И вообще тебе следует почитать про API вебсайтов, например Вконтакте: http://vk.com/developers.php?oid=-1&p=Описание_методов_API
Чтобы понять как эти самые интерфейсы программирования функционируют.
Тогда станет ясно что идея получения содержимого тега <head> просто бредовая
RUSSIAN_GOBLIN
Туть итоговый резъюм(собственно почему не сильно приветсвовал эту тему)
вряд ли будет реализовано в корне отличное от вышеприведенного запроса новых сообщений, поэтому нагружая наше громадьё - ток отдаляем реализацию... тяжело сразу делать баллистическую ракету - не сделав хотя бы перевод нынешних реализаций скриптами в менеее ёмкую работу сервера...
Далее, - наращивание аякс - поневоле приводит с совершенствованию API и выработки более совершенных стандартов... Глобалистические задумки не Айс на данном этапе, посколь у Админа наверно есть у другие планы - наши - по-ходу пьесы.
Отредактировано Deff (Ср, 14 Мар 2012 14:05:53)
А куды децо от уже реализованных скриптами
В топку эти скрипты.
Я потом описание остального API напишу. Но главное, если он (API) в желаемом мною виде реализован, можно будет написать скрипты полностью повторяющие функционал - первого сообщения, кто где, опросы на главной список ботов на главной и в активных.
И эти скрипты уже не будут столько жестоко относится к серверам МуВВ и каналам, что ведут от них в мировую паутинку веба.
Кстати, Ромыч сможет написать свой скрипт, отображающий кто оценил пост (показать аватарку, ник и саму оценку т.е. +1 или -1)
RUSSIAN_GOBLIN
В топку, не в топку - скрипты пока никуда не денуться и та нагрузка - скриптовая по аякс-запросам - остаётся и плюс добавляется новым API - cмысл Админу напрягацо ?
Отредактировано Deff (Ср, 14 Мар 2012 14:09:31)
вот прекрасный пример сайта, где широко применяются ajax запросы, при наведении курсора, на любую ссылку (трек песни, пользователь онлайн и т.д.) - http://promodj.com/
boardId - идентификационный номер форума
думаю что должен быть отдельный для первого поста темы
First_boardId - идентификационный номер первого сообщения в топике форума
Romych
Ксать реализация
было бы интересным решения Post аякс запроса на запись.
Средствами API или аякс - была бы занчительно интересней как для оценки постов(можно было бы дописать и "за что" как у DUKI, так и
данное новведение позволило бы реализовать
а) Нормальный магазин форум - принадлежностей
b) Расширенную статистику
с) Наградную страницу пользователя
Отредактировано Deff (Ср, 14 Мар 2012 14:26:15)
Далее наращивание аякс - поневоле приводит с совершенствованию API и выработки более совершенных стандартов... Глобалистические задумки не Айс на данном этапе, посколь у Админа наверно есть у другие планы - наши - по-ходу пьесы.
Аякс (в том виде, в котором он сейас используется на МуВВ) - зло, он приводит к росту нагрузок, ведь для запроса аякса формируется целая страница, как и для обычного юзера.
Использовать API выгоднее, ведь делается запрос (один или несколько) к БД и отдаются только нужные данные. И лучше сделать этот API с очень широкими возможностями, чтобы впоследствии не использовать аякс для какой-нить ерунды или не просить 10 раз в день Admin'а добавить новый метод в API.
Admin 100% против бессмысленных нагрузок на сервера МуВВ - широкое распространение аякса (и псевдоаякса - через фреймы), что бы получить немного данных со страницы форума и отобразить их, заставляет использовать более мощные серверы и быстрые каналы, и соответственно снижает возможности для расширения и совершенствования сервиса. Поэтому я думаю он реализует API с достаточно широкими возможностями.
Наша (тех, кто делает скрипты) задача - дать подробное описание желаемого API.
Но этот API должен быть продуманным и грамотным, чтобы и скриптёрам было удобно и нагрузка на тех. средства МуВВ была низкой.
Добавлено:
Romych, в другом значении аргумента data будет получение инфы о первом посте темы.
Это же был доступ к инфе о форуме в целом
Отредактировано RUSSIAN_GOBLIN (Ср, 14 Мар 2012 14:40:02)
Аякс - зло, он приводит к росту нагрузок, ведь для запроса аякса формируется целая страница, как и для обычного юзера.
В топку эти скрипты.
Дык Эти скрипты подразумевают API по селектору, и дальнейшее отсутствие наращивание аякс запросов тоже
Так шо формируй иную стратегию стандартов - Очевидно
a) Запрос контента по селектору
b) Запрос типовых переменных
с) Создание темы и запись/редактирование сообщения (от Имени Forum_Bota
d) Cоздание единого файла дополнительных глобальных переменных текущего форума
Отредактировано Deff (Ср, 14 Мар 2012 14:44:06)
Аякс - зло, он приводит к росту нагрузок,
Не факт, особенно ежли постоянный запрос js или css файла, поскольку кешируецо, да и XML, html с одним адресом тож
Так что ежли за сессию два -три запроса - нагрузка возрастает не настолько сильно, соображения по нагрузке от текущих скриптов - уже были высказаны
Отредактировано Deff (Ср, 14 Мар 2012 15:00:56)
Так шо формируй иную стратегию стандартов - Очевидно
Лучше ты свою страту сформулируй, и опубликуй здесь, а затем посмотрим что скажет Admin о твоём варианте и моём.
В топку, не в топку - скрипты пока никуда не денуться и та нагрузка - скриптовая по аякс-запросам - остаётся и плюс добавляется новым API - cмысл Админу напрягацо ?
Из-за распространения этих скриптов растёт нагрузка в основном зря.
Если создать API, и соответственно скрипты работающие благодаря ему, то нагрузка при использовании новых скриптов не будет сильно расти. И эта нагрузка будет эффективной, т.к. данные передаваемые через API будут полностью использоваться, в отличии от того что происходит сейчас. Плюс часть старых скриптов будет заменена новыми - результатом будет снижение нагрузки.
И вообще - новые скрипты станет проще создавать
Опять же, если будет реализовано API в желаемом мной виде, я сделаю цветовыделение логинов по группам
RUSSIAN_GOBLIN
Из-за распространения этих скриптов растёт нагрузка в основном зря.
Дык я про что и говорю, что если хошь сократить аякс при создании будущих скриптов - один из основных запросов API - запрос по селектору
Далее - посколь файлы в Админке ограничены - записывать можно ток в тему, для этого нун API на запись
Не будет записи - будет извернутый многофреймовый записывающий псевдоаякс
Отредактировано Deff (Ср, 14 Мар 2012 15:07:30)
Не будет записи
Записи не будет скорей всего, разве что в форум который открыт на запись для гостей.
И я не сторонник наличия в API возможности создания (редактирования) тем, опросов, сообщений...
Мне видится это уязвимостью, которую смогли бы использовать злоумышленникии и/или спамеры.
Отредактировано RUSSIAN_GOBLIN (Ср, 14 Мар 2012 16:13:28)
Вы здесь » Единый форум поддержки » Сделаем сервис лучше » API MyBB