hefestoapicontainer

Vistas

Vistas

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>

Recursos estáticos

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.

Ir a la home