Cómo construir una API RESTful con Joomla

11

He estado creando extensiones de Joomla desde la v1, pero pronto necesito poner en funcionamiento una API que he construido y que he estado usando durante un tiempo. Actualmente estoy usando Joomla 2.5 y he escrito complementos para este sistema:

https://github.com/techjoomla/com_api

Antes de comenzar a trabajar, me gustaría probar el sistema en el futuro tanto como sea posible. Este componente de API solo recientemente comenzó a actualizarse para que funcione con Joomla v3, por lo que actualmente impide que el sitio se actualice. También creo que separar la API pública y el portal del usuario tiene sentido ya que no hay ningún beneficio de ser una extensión integrada, ya que las aplicaciones móviles utilizarán la API.

El plan actual es reconstruir la API en un subdominio que nos permitirá actualizar el portal del usuario. He estado leyendo sobre el nuevo marco de Joomla que se ve emocionante. ¿Sería esto adecuado para crear una API RESTful para nuestras aplicaciones móviles? Si es así, ¿son consejos para comenzar? He leído que FoF se puede usar para construir una API, ¿sería una buena opción? Vi el proyecto Kickstarter con la intención de construir exactamente este tipo de API, ¿es esa una opción potencial? ¿Debo eliminar el sitio 2.5 actual para el subdominio para que solo ejecute la API?

Cualquier sugerencia sobre el mejor enfoque para construir una API RESTful basada en Joomla para la interacción móvil será muy apreciada.

Joe P
fuente
1
Acabo de ver estas nuevas extensiones en el Directorio de extensiones de Joomla que pueden ser útiles para usted: extensiones.joomla.org/extensions/core-enhancements/libraries/…
Lodder

Respuestas:

8

De acuerdo con mi experiencia:

Sobre el framework Joomla

Traté de construir una API RESTful simple para la autenticación integrada basada en el marco de Joomla. Es bastante complejo, bastante diferente de la API de Joomla actual. Además, el código fuente actual no se puede copiar y pegar, y las bibliotecas pueden devolver resultados inesperados (se ejecutan en un entorno diferente). Voy a esperar hasta que haya más código disponible y tenga una mayor adopción.

Sobre el marco FOF

Actualmente estoy desarrollando solo con FOF. Muy útil, mucha RAD, configuración automática, etc. y el código es compatible con J2.5 / J3.

Para una API RESTful, puede tomar el ejemplo de todo-fof y agregar un controlador con la API. Ejemplo:

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();

}

Además, puede aprovechar las vistas json automáticas. Por ejemplo, una vista de exploración (default.php) puede generar resultados json (solo agregando default_json.phpy echo json_encode...)

Anibal
fuente
1
El único problema con FOF según lo entiendo, es que ya no es compatible con el desarrollador en el núcleo de Joomla ... aunque entiendo que una versión de FOF se ha bifurcado y sigue adelante, ¿pero no como parte de Joomla?
Craig
Tienes razón, pero no es un problema en absoluto. El FOF de Joomla es bastante estable (todavía no he actualizado mis extensiones). El nuevo F0F debe instalarse como una nueva biblioteca (... al final siempre debe instalarlo en J2.5 ... y el instalador está listo para J3). En este momento, el 99% del código fuente no ha cambiado.
Anibal
Gracias por sus sugerencias, estoy de acuerdo en que Joomla Framework es bastante complejo, pero disfruto aprendiendo cómo usarlo. Quería intentar usar el marco para mi API, ya que es bastante simple, pero no puedo hacer que devuelva el encabezado correcto para JSON. Empecé otra pregunta al respecto.
Joe P
6

com_api es definitivamente una buena forma de crear servicios REST para su sitio si la extensión en sí no se basa en FOF / RAD. Sin embargo, tenga cuidado con algunas trampas si planea crear una instancia de Joomla separada solo para la API

  • Material específico del dominio (por ejemplo: si está apoyando el registro de usuarios, entonces el correo electrónico de bienvenida incluiría un enlace al subdominio API). Esto podría mitigarse jugando con la variable del servidor PHP.
  • Del mismo modo, las rutas de imagen, etc., deben ser correctas, a menos que esté utilizando S3

Aparte de eso, estoy seguro de que no debería haber ningún problema, ya que seguirá desarrollándose hasta que haya una forma de Joomla de facto de crear API.

Descargo de responsabilidad: soy el responsable de https://github.com/techjoomla/com_api

Ashwin Date
fuente
Gracias por su respuesta, es bueno saber que continúa desarrollándolo. Me encanta cómo funciona com_api, pero quería probar y evitar ejecutar todo el CMS de Joomla solo para proporcionar una API. Si no puedo hacer que el marco funcione como lo necesito, definitivamente continuaré usándolo.
Joe P
1

Mis dos centavos:

Para un cliente, necesitaba acceder al contenido de su sitio de Joomla desde una aplicación de teléfono inteligente. El contenido se colocó en com_content, por lo que inicialmente utilicé feeds obRSS. Luego encontré jBackend en JED y lo probé. Está disponible aquí http://www.selfget.com/products/jbackend.html El código parece muy limpio y admite solicitudes RESTful y respuestas JSON. La documentación en línea es limitada pero lo suficientemente clara para los técnicos. Desafortunadamente en este momento solo es compatible con com_user y com_content pero en mi caso esto estuvo bien. Ahora debería usarlo para otro cliente que usa K2 CCK. Estoy tratando de crear un complemento personalizado para acceder a artículos y categorías de K2, pero al menos guardaré todo el código de administración de solicitudes. Envié un correo electrónico al desarrollador y me dijo que está trabajando en módulos adicionales como K2 y el foro Kunena también, es una extensión muy prometedora.

WizKid
fuente
1

El siguiente sitio parece ser un excelente recurso para obtener pautas sobre cómo construir una API JSON RESTful:

http://jsonapi.org/

Por lo que vale, también estoy lanzando un producto API para Joomla 3.4.x llamado cAPI http://getcapi.org .

El diferenciador principal aquí es que apliqué mi marco de enrutamiento en el micro marco delgado. Esto me permite incorporar un marco robusto ya probado en la instancia de la aplicación Joomla. También he creado una arquitectura de complementos para las rutas de servicio, abriendo la puerta a complementos y seguridad de servicios web.

Puede encontrar información adicional de otras publicaciones, aquí:

/programming/26340885/rest-api-for-joomla-3-0/32706378#32706378

Hazme saber si tienes alguna pregunta.

Steve Tsiopanos
fuente