Priorität von Konfigurationswerten auflösen
Konfigurationsfehler beginnen häufig mit einer einfachen Frage, die überraschend schwer zu beantworten ist: Welcher Wert setzt sich tatsächlich durch?
Im Browser ausführen – kostenlos
Läuft direkt in Ihrem Browser – kostenlos. Ihre Datei verlässt Ihren Browser nicht und wird an keinen Server übertragen.
Diese Funktion vergleicht Werte aus einem Anwendungsstandard, einer Konfigurationsdatei, einer Umgebungsvariable und einem Befehlszeilenargument und wendet anschließend die von Ihnen festgelegte Rangfolge an. Sie gibt sowohl den wirksamen Wert als auch dessen Quelle zurück, sodass sich die Entscheidung leicht prüfen, testen und dokumentieren lässt. Nicht angegebene Quellen bleiben von bewusst angegebenen leeren Zeichenfolgen unterscheidbar; dadurch wird übliches Überschreibungsverhalten präzise abgebildet.
Beschreiben Sie Werte, ohne Abwesenheit und Leerwert zu verwechseln
Tragen Sie die Quellwerte im Objekt values unter den kanonischen Namen default, config_file, environment_variable und cli_flag ein. Fehlt eine Eigenschaft, hat diese Quelle keine Einstellung geliefert. Diese Unterscheidung ist wichtig, weil eine leere Zeichenfolge eine beabsichtigte Überschreibung darstellen kann: Ein CLI-Argument könnte beispielsweise gezielt ein Präfix löschen, das in einer Datei steht. Daher behandelt der Resolver eine vorhandene leere Zeichenfolge als echten Wert und überspringt sie nicht stillschweigend. Jeder angegebene Wert muss eine Zeichenfolge sein. Dies entspricht der üblichen Rohform von Umgebungsvariablen und Befehlszeilenparsern und verhindert unerwartete Umwandlungen zwischen null, falsch und Textwerten. Sie können zusätzlich einen Einstellungsnamen angeben. Er beeinflusst die Auswahl nicht, wird aber im Ergebnis wiederholt, damit Protokolle und Testfälle bei mehreren Einstellungen verständlich bleiben. Unbekannte Quellnamen werden abgelehnt, um Tippfehler sichtbar zu machen. Ist keine der vier Eigenschaften vorhanden, schlägt die Auflösung fehl, auch wenn die Standardeigenschaft fehlt. So wird aus einer fehlenden Einstellung nicht unbemerkt ein erfundener Wert.
Legen Sie die Rangfolge ausdrücklich fest und wenden Sie sie an
Das Array precedence führt alle vier Quellen von der höchsten bis zur niedrigsten Priorität auf. Eine verbreitete Reihenfolge lautet CLI-Argument, Umgebungsvariable, Konfigurationsdatei und Standardwert. Der Resolver setzt diese Konvention jedoch nicht voraus, weil Anwendungen und Bereitstellungssysteme unterschiedlich arbeiten. Er prüft die geordneten Namen und wählt die erste Quelle, deren Eigenschaft im Objekt values vorhanden ist. Die zurückgegebene Quelle erklärt, weshalb sich der Wert durchgesetzt hat; das zurückgegebene Rangfolgen-Array bewahrt zugleich die verwendete Richtlinie. Jede unterstützte Quelle muss genau einmal vorkommen, damit die Richtlinie vollständig und überprüfbar ist. Ein doppelter oder unbekannter Name, eine fehlende Quelle oder ein zusätzlicher Eintrag erzeugt einen Eingabefehler statt eines mehrdeutigen Teilergebnisses. Das hilft bei Regeln aus Dokumentationen, Framework-Migrationen oder Testmatrizen: Die eingereichte Reihenfolge ist die gesamte Regel und kein Hinweis, der mit verborgenen Vorgaben kombiniert wird. Die Auswahl ist deterministisch und führt weder Typumwandlung noch Interpolation, Dateizugriff, Umgebungsabfrage oder Befehlsanalyse aus. Dieselbe Eingabe liefert daher im Browser, CI-Auftrag und API-Aufruf stets dieselbe Ausgabe.
Nutzen Sie das Ergebnis für Tests, Diagnose und Dokumentation
Die Antwort enthält effective_value, source und die geprüfte Rangfolge. Falls Sie einen Einstellungsnamen angegeben haben, ist auch dieser enthalten. Die kompakte Struktur eignet sich gut für Komponententests: Stellen Sie die vom Lader beobachteten Rohwerte zusammen, senden Sie die beabsichtigte Richtlinie und prüfen Sie, ob sowohl der gewählte Wert als auch seine Herkunft den Erwartungen entsprechen. Auch bei der Betriebsdiagnose ist das hilfreich. Ein Supportwerkzeug kann zeigen, dass eine Zeitüberschreitung aus einer Umgebungsvariable statt aus einer versionierten Datei stammt, ohne den gesamten Anwendungsstart nachzustellen. Dokumentationsteams können Beispiele geschichteter Einstellungen in ausführbare Demonstrationen verwandeln. Der Resolver liest absichtlich weder die Umgebung des Hostprozesses noch Konfigurationsdateien und interpretiert keine CLI-Syntax. Aufrufende müssen die Eingaben selbst erfassen und entscheiden, ob Geheimnisse übermittelt werden sollen; für reine Rangfolgentests sind harmlose Platzhalter vorzuziehen. Jede Anfrage löst eine Einstellung auf und kostet über die API $0.002; der Browserpfad der Stufe A nutzt dieselbe reine Logik. Ohne Netzwerk, Zufall, Uhr oder veränderlichen Zustand bleiben identische Anfragen stabil und leicht vergleichbar oder zwischenspeicherbar.
Anwendungsfälle
Eine Überschreibung bei der Bereitstellung prüfen
Prüfen Sie, ob ein CLI-Argument oder eine Umgebungsvariable den Wert in einer Konfigurationsdatei verdrängt.
Tests für Konfigurationslader erstellen
Erzeugen Sie klare Testfälle, die sowohl den wirksamen Wert als auch die verantwortliche Quelle bestätigen.
Eine unerwartete Laufzeiteinstellung erklären
Stellen Sie eine Rangfolgeentscheidung aus erfassten Eingaben nach, ohne Dateien oder die aktive Umgebung zu lesen.
Häufige Fragen
Welche Quelle besitzt die höchste Priorität?
Die erste Quelle im Rangfolgen-Array. Sie legen für jede Anfrage die vollständige Reihenfolge fest.
Gilt eine leere Zeichenfolge als Wert?
Ja. Eine vorhandene Eigenschaft mit leerer Zeichenfolge ist ein gelieferter Wert; eine ausgelassene Eigenschaft bedeutet, dass die Quelle nichts lieferte.
Muss das Rangfolgen-Array alle Quellen enthalten?
Ja. default, config_file, environment_variable und cli_flag müssen jeweils genau einmal enthalten sein.
Was geschieht, wenn keine Quelle einen Wert liefert?
Die Anfrage gibt einen Fehler wegen ungültiger Eingabe zurück. Fehlt die Standardeigenschaft, wird kein Ersatzwert erfunden.
Liest diese Funktion meine Dateien oder die Prozessumgebung?
Nein. Sie bewertet nur die in der Anfrage enthaltenen Werte und greift weder auf das Netzwerk noch auf das System zu.
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem 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)Beispiel-Anfrage
{
"values": {
"default": "development",
"config_file": "staging",
"environment_variable": "production"
},
"precedence": [
"cli_flag",
"environment_variable",
"config_file",
"default"
]
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.config_precedence_resolve",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |