Puedes servir plantillas blade usando la directiva View. Esta directiva, junto a ServeCompiledStatic, también permite pasar a la vista un grupo de ficheros css y/o js, y que estos carguen en una única petición, que además queda cacheada en nginx, y que lleve un identificador de versión, de forma que en cada despliegue de la API, en la que podrían cambiar los js y los css, se renueve la versión del grupo de js o css, para no cargar ficheros antiguos en las vistas de las nuevas versiones.
get /home: GetCalendar: directive: Pull host: $.memory.hefesto-localhost path: /datetime/calendar target: calendar cache: 3600 View: directive: View name: home staticBasePath: $.map.main.staticBasePath css: - bootstrap.min - home js: - bootstrap.bundle.min - home data: calendar: $.memory.calendar get /js: ServeCompiledStatic: directive: ServeCompiledStatic extension: js type: application/javascript get /css: ServeCompiledStatic: directive: ServeCompiledStatic extension: css type: text/css
Los endpoints anteriores asumen:
En el primer endpoint se está sirviendo un html para la vista home. Primero se está realizando una conexión http, para cargar en memory información de un calendario.
Después, mediante la directiva View, se está renderizando la plantilla home, a la que se le pasan los css y js que queremos que cargue la vista. También se le pasan los datos del calendario almacenados previamente en memory.
Mediante la directiva ServeCompiledStatic, los otros dos endpoints, sirven los recursos js y css de cualquier vista del api, lo hacen concatenando en un fichero todo el js o css de una vista para realizar una única petición, cacheando las urls en nginx para disminuir las latencias, y versionando las urls, para que en caso de que despliegues una nueva versión de tu vista, se carguen los recursos nuevos y no los antiguos.
La plantilla home.blade.php, podría tener un aspecto como este:
<!doctype html> <html lang="es"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="{{$cssStaticFile}}"> <title>Home</title> <meta name="description" content="Mi descripción"/> </head> <body> <p>{{$calendar}}</p> <a href="{{$staticBasePath}}">Ir a la raíz</a> <script src="{{$jsStaticFile}}"></script> </body> </html>
Puedes servir estáticos, como imágenes, ficheros, etc, mediante la directiva ServeStatic. Por ejemplo:
get /images/{id}: ServeStatic: directive: ServeStatic path: Assets/images file: $.message.pathParam.id type: image/jpeg Cache: directive: CacheUrl expirationMinutes: 120
En este endpoint, mediante la directiva ServeStatic estamos sirviendo todas las imágenes en el directorio Assets/images indicado en path, en file, estamos indicando el fichero concreto a servir, que en este caso se recupera del message, y en type, estamos indicando el Content-Type del fichero.
En este ejemplo, estamos cacheando el recurso en nginx durante dos horas, pero no es obligatorio hacerlo.