Перейти к содержимому

Как создать материал в Joomla 6 через REST API

Joomla имеет встроенный Web Services API, с помощью которого внешние программы, скрипты и сервисы могут работать с данными сайта через HTTP-запросы. Один из практических сценариев – автоматическое создание материалов без входа к панели администратора.

В этом примере рассмотрим создание материала в Joomla 6 через REST API: подготовим API Token, сформируем endpoint, отправим JSON-запрос и проверим работу через Postman или CURL.

Что такое REST API в Joomla 6

Web Services API позволяет внешним системам взаимодействовать с Joomla через определены API endpoints. Вместо прямой работы с базой данных клиент отправляет HTTP-запрос в Joomla, а CMS самостоятельно выполняет проверку проверки подлинности, прав доступа и полученных данных.

Через API можно, в частности:

  • получать материалы;
  • создавать новые материалы;
  • изменять существующие материалы;
  • удалять материалы;
  • строить интеграцию Joomla с внешними системами.

Для создания материала используется HTTP-метод POST.

Что нужно для работы

Перед отправкой первого запроса необходимо подготовить:

  • сайт на Joomla 6;
  • пользователь Joomla с необходимыми правами;
  • API Token этого пользователя;
  • ID категории, в которой будет создан материал;
  • URL сайта;
  • HTTP-клиент, например Postman или cURL.

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

URL Joomla API

Базовый адрес Web Services API формируется от домена сайта. Например, для:

https://example.org

базовый URL API будет:

https://example.org/api/index.php/v1

Для работы с материалами используется endpoint:

content/articles

Полный адрес для создания материала:

https://example.org/api/index.php/v1/content/articles
Аутентификация через API Token

Защищенные API-запросы должны выполняться от имени пользователя Joomla, имеющий соответствующие права доступа.

Для стандартной аутентификации по API Token токен передается в HTTP-заголовке:

X-Joomla-Token: YOUR_API_TOKEN

Для запроса JSON также используются заголовки:

Accept: application/vnd.api+json
Content-Type: application/json
X-Joomla-Token: YOUR_API_TOKEN

Никогда не публикуйте API Token. Не добавляйте его в открытый Git-репозиторий, frontend JavaScript или другого кода, доступного посетителям сайта.

Создание материала через REST API

Для создания нового материала необходимо отправить POST-запрос на:

https://example.org/api/index.php/v1/content/articles

Данные материала передаются в JSON. Пример базового набора полей:

{
"title": "Мой новый материал",
"alias": "moy-novyj-material",
"articletext": "<p>Пример материала, созданного через REST API в Joomla 6.</p>",
"catid": 2,
"language": "*",
"metadesc": "",
"metakey": ""
}

Значение catid: 2 приведено только в качестве примера. В запросе необходимо передать ID реально существующей категории вашего сайта.

Основные поля материала
Поле Назначение
title Название материала.
alias Alias ​​материала, который Joomla может использовать при формировании URL.
articletext Основное содержание материала. Значение может содержать HTML.
catid ID категории Joomla.
language Язык материала. Значение * означает все языки.
metadesc Meta Description материала.
metakey Meta Keywords.
Создание материала через Postman

Для проверки API без написания отдельного приложения удобно использовать Postman.

  1. Создайте новый запрос и выберите метод POST.
  2. Укажите адрес:
    https://example.org/api/index.php/v1/content/articles
  3. Добавьте HTTP-заголовки:
    Accept: application/vnd.api+json
    Content-Type: application/json
    X-Joomla-Token: YOUR_API_TOKEN
  4. В разделе Body выберите raw → JSON.
  5. Передайте JSON с данными материала:
    {
    "title": "Тестовый материал Joomla API",
    "alias": "testovyi-material-joomla-api",
    "articletext": "<p>Материал создан через API.</p>",
    "catid": 2,
    "language": "*",
    "metadesc": "",
    "metakey": ""
    }
  6. Нажмите программную клавишу Send.

Если endpoint, токен, права пользователя и переданные данные корректны, Joomla обработает запрос и вернет ответ API.

Создание материала с помощью cURL

Тот же запрос можно выполнить из командной строки:

curl -X POST "https://example.org/api/index.php/v1/content/articles" \
-H "Accept: application/vnd.api+json" \
-H "Content-Type: application/json" \
-H "X-Joomla-Token: YOUR_API_TOKEN" \
-d' {
"title": "Мой первый материал",
"alias": "moy-novyj-material",
"articletext": "<p>Пример материала, созданного через REST API в Joomla 6.</p>",
"catid": 2,
"language": "*",
"metadesc": "",
"metakey": ""
}'

Замените example.org на домен сайта, YOUR_API_TOKEN — на реальный API Token, а catid – на ID нужной категории.

Типичные ошибки REST API
код HTTP Что проверить
400 Корректность JSON и наличие данных, которые ожидают API endpoint.
401 API Token и заголовок аутентификации.
403 Пользовательские права, ACL и разрешения на работу с нужной категорией.
404 URL API и правильность endpoint.
Безопасность Joomla REST API

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

  • используйте HTTPS;
  • не передавайте токен в frontend-код;
  • не публикуйте токен в Git;
  • создавайте для интеграций отдельных пользователей;
  • предоставляйте API-пользователю только необходимые ACL-права;
  • при утечке токена замените или отзовите его;
  • проверьте интеграцию на тестовом сайте перед запуском в production.
Где это можно использовать

Создание материалов через API особенно полезно там, где контент поступает из внешней системы или должен создаваться автоматически.

Например:

  • импорт материалов из другой CMS;
  • синхронизация с внутренней системой компании;
  • автоматическое формирование контента со стороннего сервиса;
  • собственная административная программа для работы с Joomla;
  • интеграция мобильного или веб-приложения с Joomla.
Вывод

Встроенный REST API Joomla позволяет создавать материалы без прямого доступа в базу данных и без автоматизации панели администратора. Для создания материала достаточно сформировать POST-запрос в content/articles, передать API Token в заголовке X-Joomla-Token и отправить данные материала в формате JSON.

На основе этого механизма можно строить импорт контента, интеграции с внешними сервисами и инструменты автоматизации Joomla.


Использованные источники:
Joomla Programmers Documentation — Web Services
JoomTech Solutions — How to Create Articles with the Joomla 6 REST API

Связаться со мной

Оставьте свои контакты, и я свяжусь с вами в ближайшее время.