Ciclo de vida de una solicitud

Resumen

Esta página describe las partes de una solicitud HTTP y los pasos con que el servidor la procesa, desde el controlador frontal index.php hasta la ejecución del enrutador. Está dirigida a quienes desarrollan apps y quieren entender el funcionamiento interno antes de definir sus rutas.

Fuente: documentación de Nextcloud, «developer_manual/basics/request_lifecycle», versión 3ad9158, licencia CC BY 3.0; traducida y adaptada para APS Conecta Gestión.

Una solicitud HTTP típica consta de lo siguiente:

  • Una URL: p. ej., /index.php/apps/myapp/something

  • Parámetros de la solicitud: p. ej., ?something=true&name=tom

  • Un método: p. ej., GET

  • Cabeceras de la solicitud: p. ej., Accept: application/json

Las secciones siguientes presentan un panorama de cómo se procesa esa solicitud, para dar una visión en profundidad de cómo funciona APS Conecta Gestión. Si no interesan los detalles internos o no se quiere ejecutar nada antes y después del controlador, se puede omitir esta sección y pasar directamente a definir las rutas de la app.

Controlador frontal

Al principio, todas las solicitudes se envían al index.php de APS Conecta Gestión, que a su vez ejecuta lib/base.php. Este archivo inspecciona las cabeceras HTTP, abstrae las diferencias entre los distintos servidores web e inicializa las clases básicas. Después se cargan las apps básicas en el siguiente orden:

  • Backends de autenticación

  • Sistema de archivos

  • Registro

El tipo de la app se determina inspeccionando su archivo de configuración (appinfo/info.xml). Cada app instalada se carga y se ejecuta (ver Arranque). Eso significa que, si se quiere ejecutar código antes de que se ejecute una app concreta, se puede colocar ese código en el archivo Navegación y configuración previa a la app de la app.

Después se realizan los pasos siguientes:

  • Intentar autenticar al usuario

  • Cargar y ejecutar los archivos Navegación y configuración previa a la app de todas las apps restantes

  • Cargar y ejecutar todas las rutas de los appinfo/routes.php de las apps

  • Ejecutar el enrutador