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
![](https://pepa.holla.cz/wp-content/uploads/2019/03/998df88a-8151-11e5-9448-4736db51020d-1024x368.png)
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:
![](https://pepa.holla.cz/wp-content/uploads/2019/03/screenshot-3-1024x654.png)
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"
![](https://pepa.holla.cz/wp-content/uploads/2019/03/screenshot-4-1024x684.png)
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:
![](https://pepa.holla.cz/wp-content/uploads/2019/03/screenshot-5-1024x446.png)
Sledování změny konfigurace
Tak to je také ízypízy:
![](https://pepa.holla.cz/wp-content/uploads/2019/03/screenshot-6-1024x654.png)
Načítání remote konfigurace
![](https://pepa.holla.cz/wp-content/uploads/2019/03/screenshot-7-1024x503.png)
No a samozřejmě jde zkombinovat sledování změn konfigurace získávané z Internetu…