Открыть сервис

MetaWeblog API

MetaWeblog API — это открытый протокол веб-сервисов на основе XML-RPC, предназначенный для удалённого управления содержимым блогов и систем управления контентом (CMS). Он позволяет клиентским приложениям (например, офлайн-редакторам, мобильным приложениям) публиковать, редактировать и удалять записи, а также загружать медиафайлы на сервер, не используя веб-интерфейс. Протокол был разработан как расширение более раннего Blogger API и на протяжении 2000-х годов являлся одним из стандартных способов взаимодействия с блоговыми платформами.

История

Предпосылки создания

В начале 2000-х годов, с ростом популярности блогов, возникла потребность в унифицированном способе публикации записей из сторонних приложений. Первым значимым протоколом стал Blogger API, разработанный компанией Pyra Labs (создателями платформы Blogger). Однако он обладал ограниченной функциональностью: в частности, не поддерживал редактирование уже опубликованных записей и загрузку файлов. Разные CMS, такие как WordPress и Movable Type, начали внедрять собственные расширения, что приводило к фрагментации.

Разработка и стандартизация

В 2002 году разработчик Дэйв Винер (Dave Winer), один из создателей формата RSS и протокола XML-RPC, предложил спецификацию MetaWeblog API. Она была призвана объединить возможности Blogger API и расширенного API сервера Manila от компании UserLand Software. Новая спецификация вводила три основных метода: metaWeblog.newPost, metaWeblog.editPost и metaWeblog.getPost, а также metaWeblog.getRecentPosts. Позднее, в 2003 году, к ним был добавлен метод metaWeblog.newMediaObject для загрузки медиафайлов.

Протокол быстро получил поддержку со стороны ведущих платформ. В 2003 году поддержка MetaWeblog API была встроена в WordPress (начиная с версии 0.71), что способствовало его широкому распространению. Movable Type, TypePad и LiveJournal также внедрили его в течение следующих нескольких лет.

Упадок и современное состояние

С середины 2010-х годов популярность MetaWeblog API начала снижаться. Это было связано с несколькими факторами:

  • Переход к RESTful API: Современные веб-приложения всё чаще используют архитектуру REST (Representational State Transfer) с форматами JSON, которые проще для разработки и отладки, чем XML-RPC.
  • Развитие веб-интерфейсов: Редакторы «живого письма» (WYSIWYG) в браузерах стали достаточно мощными, чтобы удовлетворить потребности большинства пользователей, снизив спрос на офлайн-клиенты.
  • Закрытие платформ: Некоторые ключевые платформы, такие как Windows Live Spaces и Posterous, прекратили существование, а их API были отключены.

Тем не менее, MetaWeblog API остаётся поддерживаемым в ряде крупных систем, включая WordPress (в режиме обратной совместимости) и некоторые корпоративные CMS. Он также используется в некоторых специализированных приложениях для публикации, например, в среде разработки MarsEdit для macOS.

Архитектура и протокол

Базовые принципы

MetaWeblog API основан на протоколе XML-RPC, который использует HTTP в качестве транспортного уровня. Запросы и ответы представляют собой XML-документы, передаваемые в теле HTTP-запроса методом POST. Каждый вызов API идентифицируется именем метода (например, metaWeblog.newPost). Аутентификация пользователя осуществляется путём передачи имени пользователя и пароля (или токена) в теле запроса.

Основные методы

Протокол определяет пять ключевых методов:

МетодОписание
metaWeblog.newPostСоздаёт новую запись в блоге. Принимает идентификатор блога, имя пользователя, пароль и структуру данных записи (содержание, заголовок, категории). Возвращает уникальный идентификатор (postid) созданной записи. Параметр publish определяет, будет ли запись опубликована немедленно или сохранена как черновик.
metaWeblog.editPostРедактирует существующую запись по её идентификатору. Принимает postid, имя пользователя, пароль и обновлённую структуру записи. Возвращает логическое значение true при успехе.
metaWeblog.getPostВозвращает полные данные одной записи по её идентификатору.
metaWeblog.getRecentPostsВозвращает список последних записей блога. Принимает идентификатор блога, имя пользователя, пароль и количество записей для получения.
metaWeblog.newMediaObjectЗагружает медиафайл (изображение, аудио, видео) на сервер. Принимает идентификатор блога, имя пользователя, пароль и структуру, содержащую имя файла и его содержимое в кодировке Base64. Возвращает URL загруженного файла.

Структура записи

Данные записи (post) в MetaWeblog API передаются в виде структуры (struct), содержащей набор пар «ключ-значение». Основные поля:

  • title (строка): Заголовок записи.
  • description (строка): Основное содержимое записи, обычно в формате HTML или Markdown.
  • dateCreated (дата/время): Дата и время публикации (в формате ISO 8601).
  • categories (массив строк): Список категорий или меток (тегов), к которым относится запись.
  • link (строка): Постоянная ссылка (permalink) на запись (только для чтения).
  • postid (строка): Уникальный идентификатор записи (только для чтения).

Применение

Интеграция с CMS

MetaWeblog API традиционно использовался для интеграции веб-сайтов с внешними инструментами. Наиболее распространённые сценарии:

  • Офлайн-редакторы: Программы, такие как Windows Live Writer (ныне Open Live Writer), MarsEdit, BlogJet, позволяли писать и форматировать записи на локальном компьютере, а затем публиковать их на сервере через API.
  • Мобильные приложения: В эпоху до появления мощных мобильных браузеров, приложения для iOS и Android использовали MetaWeblog API для публикации записей с телефонов.
  • Автоматизация: Разработчики использовали API для скриптовой публикации контента, например, для импорта записей из других систем или для автоматического создания отчётов.

Поддержка в популярных платформах

  • WordPress: Является одной из наиболее полных реализаций MetaWeblog API. Платформа поддерживает все пять методов, а также расширяет протокол дополнительными возможностями, такими как работа с таксономиями, настройка форматов записей и поддержка комментариев через XML-RPC. В WordPress адрес конечной точки API обычно выглядит как https://example.com/xmlrpc.php`.
  • Movable Type: Одна из первых платформ, внедривших протокол. Поддерживает все основные методы.
  • TypePad: Платформа от Six Apart (позднее закрыта) также имела полную поддержку API.

Критика и ограничения

Несмотря на свою популярность, MetaWeblog API имел ряд недостатков:

  • Избыточность XML-RPC: Формат XML-RPC генерирует много избыточного текста (overhead), что увеличивает размер запросов и замедляет работу по сравнению с JSON.
  • Отсутствие строгой спецификации: Разные платформы по-разному реализовывали детали протокола, что приводило к проблемам совместимости. Например, формат даты, кодировка символов и структура полей записи могли различаться.
  • Ограниченная функциональность: API не поддерживает работу с пользовательскими полями, произвольными типами записей, медиа-галереями, комментариями и многими другими возможностями современных CMS.
  • Проблемы безопасности: Передача пароля в открытом виде (хотя и внутри HTTP-запроса) является уязвимостью. Рекомендуется использовать HTTPS для шифрования трафика.

Наследие

MetaWeblog API сыграл ключевую роль в становлении блогосферы как экосистемы, независимой от конкретных платформ. Он позволил пользователям выбирать удобные для них инструменты для написания и управления контентом, не будучи привязанными к веб-интерфейсу конкретного сервиса. Хотя сегодня он в значительной степени вытеснен современными RESTful API, его принципы — удалённое управление контентом через стандартизированный протокол — остаются актуальными и лежат в основе многих современных систем.

Источники

  • Winer, D. (2002). MetaWeblog API Specification.
  • WordPress Codex. XML-RPC Support.
  • Six Apart Documentation. MetaWeblog API for Movable Type.
  • St. Laurent, S., Johnston, J., & Dumbill, E. (2001). Programming Web Services with XML-RPC. O'Reilly Media.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →