Maps
Los maps son ficheros JSON dentro de la carpeta Maps/ de la API. Tienen dos usos principales:
- Configuración por entorno: guardar URLs, apiKeys, constantes y demás valores que cambian según el entorno (dev, pro).
- JSON Schema: definir esquemas de validación que se usan con
LoadAndValidateModel.
Configuración por entorno
Los maps pueden ir en la raíz de Maps/ (aplican a todos los entornos) o en subcarpetas con nombre de entorno (Maps/dev/, Maps/pro/). Si el map está dentro de una carpeta de entorno, solo se cargará cuando la API esté desplegada en ese entorno.
Para acceder a estos valores desde el api.yaml, se usan alias:
before:
CheckKey:
directive: CheckKey
expected: $.map.main.viewKey
current: $.message.header.api-key
get /:
View:
directive: View
name: home
staticBasePath: $.map.main.staticBasePath
data:
domain: $.map.main.domain
También se puede acceder desde código PHP en una directiva:
$url = $state->map('main')->get('domain');
$todo = $state->map('main')->read(); // array completo
JSON Schema para validaciones
Cuando se usa la directiva LoadAndValidateModel con target: user, Hefesto busca automáticamente el fichero Maps/user.json (o Maps/{entorno}/user.json si existe).
Ejemplo de Maps/user.json usado como schema:
{
"type": "object",
"properties": {
"name": { "type": "string" },
"email": { "type": "string", "format": "email" }
},
"required": ["name", "email"],
"additionalProperties": false
}