Téměř každá aplikace potřebuje nějakou tu konfiguraci. Tou minimální bude třeba číslo portu, na kterém poběží váš Go API server. A protože nebude chtít drátovat port přímo do zdrojáku, budete jej chtít nějak korektně s minimem práce načítat z nějakého externího zdroje.
Pak je otázkou odkud a jak budete konfiguraci načítat. Automaticky se nabízí minimálně načítání konfigurace z proměnných v prostředí, nebo ze statického souboru někde na disku.
Tohle chcete dělat nějak pohodlně s minimem práce.
A pak by bylo třebe hezké, aby šlo načítat konfiguraci z nějakého síťového zdroje z Internetu. No a pak by bylo cool, kdyby se uměla konfigurace reloadnout v případě změny zdroje s konfigurací.
Tak přesně tohle, a ne jen to, umí Viper
Viper podporuje a implementuje všechny způsoby jaké vás napadnou a jakými byste chtěli načítat konfiguraci. Potřebujete načítat konfig z JSONu? YAMLu? Z prostředí? A já nevím z čeho všeho. Žádný problém. Rychle a pohodlně.
Načítání z JSONu
Vzorová konfigurace někde v ./config.json
{ "port": 8080, "prefix": "/pepa" }
Pak načtení konfigurace bude vypadat takto jednoduše:
Načítání z YAMLu
Je v podstatě stejné. Jediné co musíte změnit je typ načítané konfigurace a popřípadě název souboru ze kterého načítáte:
--- port: 8081 prefix: "/pepa"
Jediný rozdíl je opravdu ve specifikaci typu, kde je nově yaml
místo json
.
Načtení proměnné prostředí
Tak to je pak úplna hračka:
Sledování změny konfigurace
Tak to je také ízypízy:
Načítání remote konfigurace
No a samozřejmě jde zkombinovat sledování změn konfigurace získávané z Internetu…