ti-enxame.com

Como criar uma API RESTful com o Joomla

Estou construindo extensões do Joomla desde a v1, mas logo preciso fazer uma API ao vivo que construí e uso há algum tempo. Atualmente, estou usando o Joomla 2.5 e escrevi plugins para este sistema:

https://github.com/techjoomla/com_api

Antes de ir ao ar, eu gostaria de testar o sistema o máximo possível. Esse componente da API apenas recentemente começou a ser atualizado para funcionar com o Joomla v3, portanto, atualmente está impedindo a atualização do site. Também acho que separar a API pública e o portal do usuário faz sentido, pois não há benefício em ser uma extensão integrada, pois a API será usada por aplicativos móveis.

O plano atual é reconstruir a API em um subdomínio, o que nos permitirá atualizar o portal do usuário. Eu tenho lido sobre o novo framework Joomla, que parece emocionante. Isso seria adequado para criar uma API RESTful para nossos aplicativos móveis? Em caso afirmativo, são dicas sobre como começar? Eu li que o FoF pode ser usado para criar uma API, isso seria uma boa escolha? Vi o projeto Kickstarter com a intenção de criar exatamente esse tipo de API. Essa é uma opção em potencial? Devo apenas retirar o site 2.5 atual do subdomínio para que ele execute apenas a API?

Todas as sugestões sobre a melhor abordagem para a criação de uma API RESTful baseada em Joomla para interação móvel serão muito apreciadas.

11
Joe P

Da minha experiência:

Sobre o framework Joomla

Tentei criar uma API RESTful simples para autenticação integrada com base no framework Joomla. É bastante complexo, bem diferente da API atual do Joomla. Além disso, o código-fonte atual não pode ser colado e as bibliotecas podem retornar resultados inesperados (sendo executados em um ambiente diferente). Vou esperar até que mais código esteja disponível e tenha uma maior adoção.

Sobre a estrutura FOF

Atualmente, estou desenvolvendo apenas com FOF. Bastante útil, muita RAD, configuração automática, etc; e o código é compatível com J2.5/J3.

Para uma API RESTful, você pode simplesmente pegar o exemplo todo-fof e adicionar um controlador à API. Exemplo:

public function getIndexStatus()
{
    // CSRF prevention
    if ($this->csrfProtection)
    {
        $this->_csrfProtection();
    }

    $message['status'] = true;
    $message['error_message'] = 'Status Ok';

    $message = json_encode($message);
    echo $message;
    flush();

    JFactory::getApplication()->close();

}

Além disso, você pode aproveitar as visualizações automáticas do json, por exemplo, uma visualização de navegação (default.php) pode gerar saída json (apenas adicionando default_json.php e echo json_encode ...)

8
Anibal

com_api é definitivamente uma boa maneira de criar serviços REST para o seu site se a extensão em si não for baseada em FOF/RAD. No entanto, tenha cuidado com algumas dicas, se você planeja criar uma instância separada do Joomla somente para a API

  • Itens específicos do domínio (por exemplo: se você estiver apoiando o registro do usuário, o email de boas-vindas incluirá um link para o subdomínio da API). Isso pode ser atenuado brincando com a variável de servidor PHP do servidor.
  • Da mesma forma, os caminhos de imagem, etc, precisam estar corretos, a menos que você esteja usando o S3

Além disso, tenho certeza de que não deve haver problemas, pois isso continuará sendo desenvolvido até que exista uma maneira de criar APIs do Joomla.

Disclaimer: Eu sou o mantenedor de https://github.com/techjoomla/com_api

6
Ashwin Date

Meus dois centavos:

Para um cliente, eu precisava acessar o conteúdo do site joomla a partir de um aplicativo para smartphone. O conteúdo foi colocado em com_content, então, inicialmente, usei feeds obRSS. Então eu encontrei o jBackend no JED e tentei. Está disponível aqui http://www.selfget.com/products/jbackend.html O código parece muito limpo e suporta solicitações RESTful e respostas JSON. A documentação online é limitada, mas suficientemente clara para os técnicos. Infelizmente, no momento, ele suporta apenas com_user e com_content, mas no meu caso, tudo estava bem. Agora devo usá-lo para outro cliente que usa o K2 CCK. Estou tentando criar um plug-in personalizado para acessar artigos e categorias do K2, mas pelo menos salvarei o código de gerenciamento de solicitações inteiro. Enviei um email para o desenvolvedor e ele me disse que também está trabalhando em módulos adicionais como o fórum K2 e Kunena, é uma extensão muito promissora.

1
WizKid

O site a seguir parece ser um excelente recurso para diretrizes sobre como criar uma API JSON RESTful:

http://jsonapi.org/

Pelo que vale a pena, também estou lançando um produto API para o Joomla 3.4.x chamado cAPI http://getcapi.org .

O principal diferencial aqui é que eu apostou minha estrutura de roteamento na micro-estrutura Slim. Isso me permite incorporar uma estrutura robusta já testada e testada na instância do aplicativo Joomla. Também criei uma arquitetura de plug-in para as rotas de serviço, abrindo a porta para complementos e segurança de serviços da web.

Você pode encontrar informações adicionais de outras postagens aqui:

https://stackoverflow.com/questions/26340885/rest-api-for-joomla-3-0/32706378#32706378

Deixe-me saber se você tiver alguma dúvida.

1
Steve Tsiopanos