Resolver la precedencia de valores de configuración
Descubra qué valor de configuración manda de verdad: con development por defecto, staging en el archivo y production en una variable de entorno, el orden habitual devuelve production e indica de qué fuente salió. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Corre en su navegador. Gratis y sin límite: sus datos no salen de esta página.
Los errores de configuración suelen empezar con una pregunta sencilla que resulta difícil: ¿qué valor prevalece realmente? Esta capacidad compara los valores aportados por el valor predeterminado de una aplicación, un archivo de configuración, una variable de entorno y una opción de línea de comandos, y aplica el orden de precedencia que usted defina. Devuelve tanto el valor efectivo como la fuente que lo proporcionó, para que la decisión sea fácil de revisar, probar y documentar. Las fuentes omitidas se distinguen de las cadenas vacías proporcionadas deliberadamente, por lo que el comportamiento habitual de las sobrescrituras se representa con precisión.
Describa los valores sin perder la semántica de ausencia
Una propiedad ausente indica que esa fuente no proporcionó el ajuste. Esta distinción es importante porque una cadena vacía puede ser una sobrescritura intencionada: por ejemplo, una opción de CLI podría borrar deliberadamente un prefijo existente en un archivo. Por ello, el solucionador trata una cadena vacía presente como un valor real y no la omite silenciosamente.
Cada valor debe ser una cadena, como ocurre normalmente con las variables de entorno y los analizadores de línea de comandos, y así se evitan conversiones inesperadas entre cero, falso y valores textuales. También puede indicar el nombre del ajuste. No modifica la selección; se reproduce en el resultado para que los registros y casos de prueba sean comprensibles al evaluar varios ajustes.
Los nombres de fuente desconocidos se rechazan para detectar errores ortográficos. Si ninguna de las cuatro propiedades está presente, la resolución falla, también cuando falta la propiedad predeterminada.
Defina y aplique la precedencia de forma explícita
La matriz precedence enumera las cuatro fuentes desde la prioridad más alta hasta la más baja. Un orden convencional es opción de CLI, variable de entorno, archivo de configuración y valor predeterminado, pero el solucionador no presupone esa convención porque las aplicaciones y los sistemas de despliegue difieren. Examina los nombres ordenados y selecciona la primera fuente cuya propiedad existe en el objeto values.
La fuente devuelta explica por qué ganó ese valor, mientras que la matriz de precedencia devuelta conserva la política aplicada. Exigir cada fuente compatible exactamente una vez hace que la política sea completa y auditable. Un nombre duplicado o desconocido, una fuente ausente o una entrada adicional generan un error de entrada en lugar de un resultado parcial ambiguo.
Esto resulta útil cuando las reglas proceden de documentación, migraciones de marcos o matrices de pruebas: el orden enviado constituye toda la regla, no una sugerencia combinada con valores implícitos. La selección es determinista y no convierte tipos, interpola, accede a archivos, consulta el entorno ni analiza comandos.
Use el resultado en pruebas, diagnósticos y documentación
Si usted proporcionó un nombre de ajuste, la respuesta también lo incluye. También facilita los diagnósticos operativos. Una herramienta de soporte puede mostrar que un tiempo de espera procede de una variable de entorno y no de un archivo versionado, sin reproducir todo el inicio de la aplicación.
Los equipos de documentación pueden convertir ejemplos de ajustes por capas en demostraciones ejecutables. El solucionador no lee el entorno del proceso anfitrión, no abre archivos ni interpreta la sintaxis de CLI. Quien llama debe recopilar las entradas y decidir si conviene enviar secretos; use normalmente marcadores inocuos para probar solo la precedencia.
Sin red, azar, reloj ni estado mutable, las solicitudes idénticas son estables y fáciles de comparar o almacenar en caché.
Qué puede hacer con ella
Verificar una sobrescritura de despliegue
Confirme si una opción de CLI o una variable de entorno prevalece sobre el valor guardado en un archivo de configuración.
Crear pruebas del cargador de configuración
Genere casos claros que comprueben tanto el valor efectivo como la fuente responsable.
Explicar un ajuste inesperado en ejecución
Reproduzca una decisión de precedencia con entradas recopiladas sin leer archivos ni acceder al entorno activo.
Preguntas frecuentes
¿Qué fuente tiene la precedencia más alta?
La primera fuente de la matriz de precedencia. Usted define el orden completo en cada solicitud.
¿Una cadena vacía cuenta como valor?
Sí. Una propiedad presente con una cadena vacía es un valor aportado; una propiedad omitida indica que la fuente no aportó nada.
¿Qué ocurre si ninguna fuente proporciona un valor?
La solicitud devuelve un error de entrada no válida. No se inventa ningún valor alternativo cuando falta la propiedad predeterminada.
¿Esta capacidad lee mis archivos o el entorno del proceso?
No. Solo evalúa los valores incluidos en la solicitud y no accede a la red ni al sistema.
¿Por qué hay que indicar las cuatro fuentes en el orden de prioridad?
Para que la regla quede completa y se pueda revisar. Si falta una fuente, se repite, no existe o sobra, se rechaza en lugar de dar una respuesta parcial, lo que además detecta erratas que parecerían una configuración ausente.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/dev/config-precedence-resolve \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"values":{"default":"development","config_file":"staging","environment_variable":"production"},"precedence":["cli_flag","environment_variable","config_file","default"]}'const res = await fetch("https://api.kit.forhosting.com/dev/config-precedence-resolve", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"values": {
"default": "development",
"config_file": "staging",
"environment_variable": "production"
},
"precedence": [
"cli_flag",
"environment_variable",
"config_file",
"default"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/config-precedence-resolve",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"values": {
"default": "development",
"config_file": "staging",
"environment_variable": "production"
},
"precedence": [
"cli_flag",
"environment_variable",
"config_file",
"default"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/config-precedence-resolve", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"values":{"default":"development","config_file":"staging","environment_variable":"production"},"precedence":["cli_flag","environment_variable","config_file","default"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"values":{"default":"development","config_file":"staging","environment_variable":"production"},"precedence":["cli_flag","environment_variable","config_file","default"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/config-precedence-resolve", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"values": {
"default": "development",
"config_file": "staging",
"environment_variable": "production"
},
"precedence": [
"cli_flag",
"environment_variable",
"config_file",
"default"
]
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.config_precedence_resolve",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
Describa los valores sin perder la semántica de ausencia
Introduzca los valores de origen en el objeto values con los nombres canónicos default, config_file, environment_variable y cli_flag.
Defina y aplique la precedencia de forma explícita
Solo evalúa los valores que usted envía, por lo que una misma entrada siempre genera la misma salida en el navegador, CI o API.
Use el resultado en pruebas, diagnósticos y documentación
La respuesta contiene effective_value, source y el orden de precedencia evaluado. Cada solicitud resuelve un ajuste y cuesta $0.002 mediante la API, mientras que la ruta de navegador de nivel A utiliza la misma lógica pura.
Preguntas técnicas
¿La matriz de precedencia debe incluir todas las fuentes?
Sí. Debe contener default, config_file, environment_variable y cli_flag exactamente una vez cada una.