2017-02-06 13 views
0

Нет опыта работы с CQ/AEM, но он был выброшен в глубокий конец.Может ли CQ5/Adobe Experience Manager использоваться без головы?

У меня есть подход, когда у нас будет веб-интерфейс (построенный с использованием Ember.js/handlebars), вызывающий веб-службу, которая, в свою очередь, объединяет данные (например, сколько фильмов вы просматривали) с соответствующий контент (например, веб-служба знает, как искать узел X в CMS, «Спасибо за просмотр всех этих фильмов!») и вернуть копию, изображение и данные в одном документе JSON.

Это работает очень хорошо, когда у меня есть RESTful API для CMS.

Однако меня попросили сделать Adobe Experience Manager/CQ5 CMS и знать, существует ли такая же вещь.

Я не думаю, что так оно и есть; Я знаю, что CQ5 использует либо JCR/CRX в качестве хранилища контента, но от того, что я могу видеть, они не подвергаются как веб-сервис (API уровня только одного языка)

AEM 6.2 использует JCR дубом, обещает успокоительный API.

Итак, вкратце, мой вопрос: делает ли JCR OAK RESTful API для контента, и если да, то можете ли вы предоставить какие-либо примеры/указатели, пожалуйста?

+3

определенно AEM может выставить CRX как JSON. вы задаете вопрос, связанный с тем же вопросом, что и [expose-adobe-aem-bundles-as-restful-webservices] (https://stackoverflow.com/questions/41877499/expose-adobe-aem-bundles-as-restful-webservices) – VAr

+0

Вы действительно должны быть осторожны относительно нагрузки на систему. Запросы JSON должны быть кэшированы. –

ответ

3

AEM поставляется с Apache Sling, что позволяет получить доступ к содержимому JCR через HTTP-запросы.

DefaultGetServlet может позволить вам отображать содержимое в формате JSON с помощью расширения json.

Например:

http://localhost:4502/content/geometrixx-outdoors/en/men.infinity.json

возвращает следующий JSON (укоротить для удобства чтения):

{ 
    jcr:primaryType: "cq:Page", 
    jcr:createdBy: "admin", 
    jcr:created: "Mon Jan 09 2017 14:44:46 GMT+1100", 
    jcr:content: { 
     jcr:primaryType: "cq:PageContent", 
     jcr:mixinTypes: [ 
      "cq:LiveSync" 
     ], 
    jcr:createdBy: "admin", 
    jcr:title: "Men's" 
} 

По AEM 6.1, есть также более удобный API на основе Siren ; однако он еще не полностью завершен.

http://localhost:4502/api.json/content/geometrixx-outdoors/en/men.html

Возвращает следующий JSON (укороченный для удобства чтения):

{ 
    links: [ 
    { 
     rel: [ 
      "self" 
     ], 
     href: "http://localhost:4502/api.json" 
    }, 
    { 
     rel: [ 
      "assets" 
     ], 
     href: "http://localhost:4502/api/assets.json" 
    } 
    ], 
    class: [ 
     "core/services" 
    ], 
    properties: { 
     name: "api" 
    } 
} 

Эти функции OOTB, но вы всегда можете создать свой собственный Sling Servlet разоблачать содержание, как вам нравится.

1

Если вы не можете использовать AEM без использования его для размещения своего сайта, то да, он может использоваться как репозиторий Restful content, как объясняют другие. AEM 6.1+ имеет большую поддержку SPA, поэтому вы можете изучить это, а не идти по пути использования его только в качестве хранилища контента.