Введение
Управление контентом в Optimizely CMS становится более эффективным и оптимизированным благодаря возможностям API управления контентом.
Оптимизировать API управления контентом добавляет конечные точки REST для основных операций управления контентом, таких как:
- Создание объектов контента
- Изменение существующих объектов контента
- Удаление объектов контента
- Получить черновые объекты контента
- Перемещение объектов контента
REST API полезен для передачи внешнего контента в Optimizely без необходимости развертывания специального кода интеграции в системе управления контентом Optimizely (CMS).
В этом кратком руководстве я расскажу, как настроить решение для создания контента с помощью API.
Предварительные условия
Прежде чем приступить к процессу, убедитесь, что у вас есть следующее:
- Активный экземпляр Optimizely CMS (для настройки сайта Alloy обратитесь к моему руководству). здесь).
- Знакомство с инструментом запроса API, таким как Postman.
- Хорошее понимание структуры и типов контента вашей CMS.
Шаг 1. Установите и настройте API управления контентом
Сначала давайте настроим API управления контентом. Если вы используете Visual Studio, вы можете установить ее через диспетчер пакетов или через интерфейс командной строки с помощью этой команды:
dotnet add package EPiServer.ContentManagementApi
После установки измените класс запуска, включив в него базовую конфигурацию. в ConfigureServices
метод, добавьте следующую строку:
services.AddContentManagementApi(o => o.DisableScopeValidation = true);
Затем создайте и запустите свое решение с помощью:
dotnet run
Шаг 2. Проверьте конечную точку
После установки API управления контентом вы можете протестировать конечную точку с помощью Postman. Отправьте простой POST-запрос на /api/episerver/v3.0/contentmanagement
. Поскольку мы не добавили никаких параметров, ожидайте код состояния 400 Bad Request с конкретным ответом JSON.
{
"errors": {
"filename": [
"The filename field is required."
],
"content-Type": [
"The contentType field is required."
]
},
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",
"title": "One or more validation errors occurred.",
"status": 400,
"traceId": "00-b2f4877cb70b04fc20ea6fc0dfe1d2fe-d37b0cf2e4dc9458-00",
"code": "InvalidModel"
}
Этот ответ сообщает нам, что конечная точка работает. В качестве альтернативы это привело бы к коду состояния 404. На этом этапе мы можем попробовать добавить контент в Optimizely CMS через Postman. Используйте предоставленное тело JSON, но из-за разрешений вы, скорее всего, столкнетесь со статусом 401.
{
"name": "Text Block (Content Management API)",
"language": {
"name": "en"
},
"contentType": [
"Block",
"EditorialBlock"
],
"parentLink": {
"id": "33"
},
"mainBody": {
"value": "Hello World
"
},
"status": "Published"
}
Пример ответа
{
"type": "https://tools.ietf.org/html/rfc7235#section-3.1",
"title": "Unauthorized",
"status": 401,
"detail": "Access was denied to content 33. The required access level was "Create, Publish".",
"instance": "/api/episerver/v3.0/contentmanagement",
"traceId": "00-c91883ef32f39b8dda0571df62c44b7b-d48fe0471f6254da-00"
}
В целях тестирования вы можете временно предоставить права доступа «Всем» для создания и публикации страниц. После внесения этого изменения повторно запустите запрос. Теперь вы должны получить код состояния 201 (Успех) с контентом, успешно созданным в CMS.
Шаг 3. Аутентификация API через OpenID Connect
В реальном мире предоставление доступа «Всем» к публикации контента неприемлемо. Чтобы гарантировать, что уполномоченные лица/службы создают и публикуют контент, нам необходимо аутентифицировать запросы API управления контентом с помощью OpenID Connect и токенов носителя (JWT). Вот как:
- Установите пакет OpenIDConnect NuGet с помощью этой команды:
dotnet add package EPiServer.OpenIDConnect.UI
- Измените класс Startup, чтобы настроить этот пакет и обеспечить его поддержку API управления контентом. Обновите код следующим образом:
services.AddContentManagementApi(OpenIDConnectOptionsDefaults.AuthenticationScheme, options => { options.DisableScopeValidation = true; }); services.AddOpenIDConnect
( useDevelopmentCertificate: true, signingCertificate: null, encryptionCertificate: null, createSchema: true ); services.AddOpenIDConnectUI(); - После сохранения файла создайте и запустите решение и войдите в режим администратора Optimizely. Найдите «OpenID Connect» в настройках, создайте новое приложение (установите области как «epi_content_management»).
- Проверьте, работает ли все это, выполнив POST-запрос в Postman, чтобы
/api/episerver/connect/token
со следующими параметрами:- client_id: API-клиент
- client_secret: Суперсекрет
- тип_гранта: client_credentials
- Вы получите токен ограниченного по времени доступа.
Зайдя так далеко и успешно сгенерировав токен на предъявителя, мы должны предоставить нашему вновь созданному клиенту разрешения на создание и публикацию контента. Мы делаем это, управляя правами доступа в Optimizely. Удалите дополнительные права, предоставленные группе «Все», и добавьте их в список api-client
вместо этого с теми же правами.
Наконец, скопируйте токен доступа из Postman и сделайте еще один запрос POST к /api/episerver/v3.0/contentmanagement
на этот раз также устанавливая токен авторизации.
Вот и все! Теперь мы безопасно создаем контент через API управления контентом, используя токен носителя JWT.
** Для дополнительных мер безопасности вы можете добавить некоторые дополнительные политики CORS в свое решение Optimizely, чтобы только определенные службы могли вызывать запросы API управления контентом или даже блокировать API с помощью ограничений IP.
Заключение
API управления контентом вместе с API определений контента представляют собой довольно мощные инструменты, их несложно настроить и они имеют множество вариантов использования, например, API управления контентом, который мы можем довольно легко использовать для процессов миграции и импорта большого количества контента в CMS в оптом все программно. После недавнего анонса SaaS CMS, предлагающего API определений контента, он весьма полезен при создании типов контента и чего-то, что можно довольно легко контролировать исходным кодом, поэтому определенно стоит обратить на это внимание и попробовать.
Рекомендации
- Начните работу с API управления контентом (optimizely.com)
- Аутентификация API (optimizely.com)
- Примеры API управления контентом (optimizely.com)
01 ноября 2023 г.