it-swarm-es.tech

Cómo construir una API RESTful con Joomla

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 ponerlo en marcha, 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 que sea 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 una opción potencial? ¿Debería 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.

11
Joe P

Por mi experiencia:

Acerca del marco de 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.

Acerca del 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, solo 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, p. Ej. una vista de exploración (default.php) puede generar salida json (simplemente agregando default_json.php y echo json_encode ...)

8
Anibal

com_api es definitivamente una buena manera de construir 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 de 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 mantenedor de https://github.com/techjoomla/com_api

6
Ashwin Date

Mis dos centavos:

Para un cliente, necesitaba acceder al contenido de su sitio de Joomla desde una aplicación de teléfono inteligente. Los contenidos se colocaron 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 los 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 también está trabajando en módulos adicionales como K2 y el foro Kunena, es una extensión muy prometedora.

1
WizKid

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 Slim. 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í:

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

Hazme saber si tienes alguna pregunta.

1
Steve Tsiopanos