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 →