A API HTTP Assets inclui:
A implementação atual da API HTTP Assets baseia-se no estilo arquitetônico REST.
A API REST do Assets permite que desenvolvedores para Adobe Experience Manager como Cloud Service para acessar conteúdo (armazenado em AEM) diretamente pela API HTTP, por meio de operações CRUD (Criar, Ler, Atualizar, Excluir).
A API permite que você opere o Adobe Experience Manager como um Cloud Service como um CMS (Gestão de conteúdo System) sem cabeçalho, fornecendo Serviços de conteúdo a um aplicativo front-end JavaScript. Ou qualquer outro aplicativo que possa executar solicitações HTTP e manipular respostas JSON.
Por exemplo, aplicativos de página única (SPA), baseados em estrutura ou personalizados, exigem conteúdo fornecido pela API HTTP, geralmente no formato JSON.
Embora AEM Componentes principais ofereçam uma API muito abrangente, flexível e personalizável que possa servir as operações de Leitura necessárias para essa finalidade, e cuja saída JSON possa ser personalizada, eles exigem AEM know-how WCM (Gestão de conteúdo da Web) para implementação, pois devem ser hospedados em páginas que se baseiam em modelos de AEM dedicados. Nem todas as organizações de desenvolvimento SPA têm acesso direto a esse conhecimento.
É quando a API REST de ativos pode ser usada. Ela permite que os desenvolvedores acessem ativos (por exemplo, imagens e fragmentos de conteúdo) diretamente, sem a necessidade de primeiro incorporá-los em uma página e entregar seu conteúdo em formato JSON serializado.
Não é possível personalizar a saída JSON da API REST de ativos.
A API REST de ativos também permite que os desenvolvedores modifiquem o conteúdo - criando novos ativos, atualizando ou excluindo ativos, fragmentos de conteúdo e pastas existentes.
A API REST de ativos:
A API REST de ativos está disponível em cada instalação predefinida de uma versão recente do Adobe Experience Manager como Cloud Service.
A API REST do Assets oferta o acesso REST ao estilo dos ativos armazenados em uma instância AEM.
Ele usa o terminal /api/assets
e requer que o caminho do ativo acesse-o (sem o /content/dam
à esquerda).
/content/dam/path/to/asset
/api/assets/path/to/asset
Por exemplo, para acessar /content/dam/wknd/en/adventures/cycling-tuscany
, solicite /api/assets/wknd/en/adventures/cycling-tuscany.json
Acesso através de:
/api/assets
não precisa do uso do .model
seletor./content/path/to/page
Não requer o uso do .model
seletor.O método HTTP determina a operação a ser executada:
Os parâmetros do corpo da solicitação e/ou URL podem ser usados para configurar algumas dessas operações; por exemplo, defina que uma pasta ou um ativo deve ser criado por uma solicitação POST.
O formato exato das solicitações com suporte é definido na documentação Referência da API.
Todas as solicitações são atômicas.
Isso significa que as solicitações subsequentes (write
) não podem ser combinadas em uma única transação que pode ter êxito ou falha como uma única entidade.
Aspecto | API REST de ativos |
Componente AEM (componentes que usam Modelos Sling) |
Casos de uso suportados | Finalidade geral. | Otimizado para consumo em um aplicativo de página única (SPA) ou em qualquer outro contexto (que consome conteúdo). Também pode conter informações de layout. |
Operações suportadas | Criar, Ler, Atualizar, Excluir. Com operações adicionais, dependendo do tipo de entidade. |
Somente leitura. |
Acesso | Pode ser acessado diretamente. Usa o ponto de extremidade Um caminho de exemplo seria: |
Precisa ser referenciado por meio de um componente AEM em uma página AEM. Usa o seletor Um caminho de exemplo seria: |
Segurança | Várias opções são possíveis. É proposta a OAuth; pode ser configurado separadamente da configuração padrão. |
Usa AEM configuração padrão. |
Observações arquitetônicas | O acesso de gravação normalmente endereçará uma instância do autor. A leitura também pode ser direcionada para uma instância de publicação. |
Como essa abordagem é somente leitura, normalmente será usada para instâncias de publicação. |
Saída | Saída SIREN baseada em JSON: profundo, mas poderoso. Permite navegar dentro do conteúdo. | Saída proprietária baseada em JSON; configurável por meio de modelos Sling. É difícil implementar a navegação na estrutura de conteúdo (mas não é necessariamente impossível). |
Se a API REST de ativos for usada dentro de um ambiente sem requisitos de autenticação específicos, AEM filtro CORS precisa ser configurado corretamente.
Para obter mais informações, consulte:
Em ambientes com requisitos de autenticação específicos, o OAuth é recomendado.
Fragmentos de conteúdo são um tipo específico de Ativo, consulte Trabalhar com fragmentos de conteúdo.
Para obter mais informações sobre os recursos disponíveis por meio da API, consulte:
A API REST de ativos suporta paginação (para solicitações de GET) pelos parâmetros de URL:
offset
- o número da primeira entidade (filho) a recuperarlimit
- o número máximo de entidades devolvidasA resposta conterá informações de paginação como parte da seção properties
da saída SIREN. Essa propriedade srn:paging
contém o número total de entidades (filho) ( total
), o deslocamento e o limite ( offset
, limit
) conforme especificado na solicitação.
O paginação normalmente é aplicado em entidades de container (ou seja, pastas ou ativos com renderizações), pois está relacionado aos filhos da entidade solicitada.
GET /api/assets.json?offset=2&limit=3
...
"properties": {
...
"srn:paging": {
"total": 7,
"offset": 2,
"limit": 3
}
...
}
...
As pastas atuam como container para ativos e outras pastas. Elas refletem a estrutura do repositório de conteúdo AEM.
A API REST de ativos expõe o acesso às propriedades de uma pasta; por exemplo, seu nome, título etc. Os ativos são expostos como entidades filhas de pastas e subpastas.
Dependendo do tipo de ativo dos ativos e pastas filho, a lista de entidades filhas já pode conter o conjunto completo de propriedades que define a respectiva entidade-filho. Como alternativa, apenas um conjunto reduzido de propriedades pode ser exposto para uma entidade nesta lista de entidades-filho.
Se um ativo for solicitado, a resposta retornará seus metadados; como título, nome e outras informações, conforme definido pelo respectivo schema de ativos.
Os dados binários de um ativo são expostos como um link SIREN do tipo content
.
Os ativos podem ter várias representações. Normalmente, são expostos como entidades filhas, uma exceção é uma execução em miniatura, que é exposta como um link do tipo thumbnail
( rel="thumbnail"
).
Um fragmento de conteúdo é um tipo especial de ativo. Eles podem ser usados para acessar dados estruturados, como textos, números, datas, entre outros.
Como há várias diferenças nos ativos standard (como imagens ou áudio), algumas regras adicionais se aplicam ao seu tratamento.
Fragmentos de conteúdo:
Não exponha quaisquer dados binários.
Estão completamente contidos na saída JSON (na propriedade properties
).
Também são considerados atômicos, ou seja, os elementos e variações são expostos como parte das propriedades do fragmento vs. como links ou entidades filhas. Isso permite um acesso eficiente à carga de um fragmento.
Atualmente, os modelos que definem a estrutura de um fragmento de conteúdo não são expostos por meio de uma API HTTP. Portanto, o consumidor precisa saber sobre o modelo de um fragmento (pelo menos um mínimo) - embora a maioria das informações possa ser inferida da carga; como tipos de dados, etc. fazem parte da definição.
Para criar um novo fragmento de conteúdo, o caminho (repositório interno) do modelo deve ser fornecido.
O conteúdo associado não está exposto no momento.
O uso pode ser diferente se você estiver usando um autor ou ambiente de publicação AEM, juntamente com seu caso de uso específico.
É altamente recomendável que a criação seja vinculada a uma instância do autor (e atualmente não há como replicar um fragmento para publicação usando essa API).
O delivery é possível de ambos, pois AEM serve o conteúdo solicitado somente no formato JSON.
O armazenamento e o delivery de uma instância do autor AEM devem ser suficientes para aplicativos de biblioteca de mídia atrás do firewall.
Para o delivery online ao vivo, uma instância de publicação AEM é recomendada.
A configuração do dispatcher em instâncias AEM nuvem pode bloquear o acesso a /api
.
Para obter mais detalhes, consulte Referência da API. Especificamente, API do Adobe Experience Manager Assets - Fragmentos de conteúdo.
O uso é feito via:
GET /{cfParentPath}/{cfName}.json
Por exemplo:
http://<host>/api/assets/wknd/en/adventures/cycling-tuscany.json
A resposta é JSON serializado com o conteúdo estruturado como no fragmento de conteúdo. As referências são enviadas como URLs de referência.
Dois tipos de operações de leitura são possíveis:
O uso é feito via:
POST /{cfParentPath}/{cfName}
O corpo deve conter uma representação JSON do fragmento de conteúdo a ser criado, incluindo qualquer conteúdo inicial que deve ser definido nos elementos do fragmento de conteúdo. É obrigatório definir a propriedade cq:model
e deve apontar para um modelo de fragmento de conteúdo válido. Se isso não for feito, ocorrerá um erro. Também é necessário adicionar um cabeçalho Content-Type
que esteja definido como application/json
.
O uso é via
PUT /{cfParentPath}/{cfName}
O corpo deve conter uma representação JSON do que deve ser atualizado para o fragmento de conteúdo fornecido.
Pode ser simplesmente o título ou a descrição de um fragmento de conteúdo, um único elemento ou todos os valores de elementos e/ou metadados.
O uso é feito via:
DELETE /{cfParentPath}/{cfName}
Há algumas limitações:
Os seguintes códigos de status podem ser vistos nas circunstâncias relevantes:
200 (OK) Retornado quando:
GET
PUT
201 (Criado) Retornado quando:
POST
404 (Não encontrado) Retornado quando:
500 (Erro interno do servidor)
Este erro é retornado:
O seguinte lista cenários comuns quando esse status de erro é retornado, juntamente com a mensagem de erro (monospace) gerada:
A pasta pai não existe (ao criar um fragmento de conteúdo via POST
)
Nenhum modelo de fragmento de conteúdo é fornecido (cq:model está ausente), não pode ser lido (devido a um caminho inválido ou a um problema de permissão) ou não há um modelo de fragmento válido:
No content fragment model specified
Cannot create a resource of given model '/foo/bar/qux'
Não foi possível criar o fragmento do conteúdo (possivelmente um problema de permissão):
Could not create content fragment
Não foi possível atualizar o título e/ou a descrição:
Could not set value on content fragment
Não foi possível definir metadados:
Could not set metadata on content fragment
O elemento de conteúdo não foi encontrado ou não pôde ser atualizado
Could not update content element
Could not update fragment data of element
As mensagens de erro detalhadas normalmente são retornadas da seguinte maneira:
{
"class": "core/response",
"properties": {
"path": "/api/assets/foo/bar/qux",
"location": "/api/assets/foo/bar/qux.json",
"parentLocation": "/api/assets/foo/bar.json",
"status.code": 500,
"status.message": "...{error message}.."
}
}
Consulte aqui para obter referências detalhadas da API:
Para obter mais informações, consulte: