Go: načítání konfigurace

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ě yamlmí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…