Memory se usa para poder leer/escribir valores de cualquier tipo en una directiva y tener acceso a ellos desde cualquier otra directiva.
Un par de ejemplos para entenderlo:
- La directiva LoadAndValidateModel, valida un body que entra a un endpoint y lo carga en memory. Luego desde otra directiva podrás acceder al objeto recibido usando memory.
- Imagina que tienes dos directivas, una para conseguir datos de un usuario, accediendo a otro servicio, y otra para almacenar todos los datos, incluyendo los recibidos en la primera directiva. En la primera directiva escribirás los datos en memory, y en la segunda los leerás.
Las directivas pueden leer de memory a través de alias:
key: poems
endpoints:
post /user:
LoadUser:
directive: LoadAndValidateModel
source: $.message.bodyAsArray
target: user
SaveUser:
directive: SaveUser
user: $.memory.user
En el caso anterior, LoadUser, internamente, escribe en memory, en la key user (un array con los datos de un usuario). Que luego se pasa a la directiva SaveUser a través del alias: $.memory.user
Puedes escribir a memory usando el estado, desde dentro de una directiva:
$state->memory()->set('day','monday');
Y luego leer, desde dentro de otra directiva:
$state->memory()->get('day');//devolvería monday
O usando un alias:
key: poems
endpoints:
post /day:
CalculateDay:
directive: CalculateDay
SaveDay:
directive: SaveDay
user: $.memory.day
El método set, admite cualquier tipo de dato, string, integer, array, etc.
Memory también se usa para acceder a las siguientes variables globales:
- $state->memory()->get('hefesto-localhost') -> un string con el valor del host local de Hefesto, que incluye organización y entorno. Si quieres hacer llamadas a otra API en el mismo virtual-host, deberías usar esta constante.
- $state->memory()->get('hefesto-pathcode') -> un string con el path a la API desplegada, si quieres acceder a algún fichero desplegado en tu API, deberías usar esta constante.
- $state->memory()->get('hefesto-pathstorage') -> un string con el path al espacio en disco para esa API, si quieres almacenar ficheros en tiempo de ejecución y acceder luego a ellos, deberías usar esta constante.
- $state->memory()->get('hefesto-org') -> un string con el dominio del virtual-host
- $state->memory()->get('hefesto-env') -> un string con el entorno del virtual-host
- $state->memory()->get('hefesto-api') -> un string con la key de la API.
Ir a la home