environ (WSGI)

V kontextu standardu WSGI je environ speciální slovník (dictionary) v jazyce Python, který obsahuje všechny informace o aktuálním HTTP požadavku a proměnné prostředí serveru.

Tento slovník předává webový server (např. Gunicorn nebo uWSGI) aplikaci při každém požadavku uživatele.

Klíčové skupiny informací

Slovník `environ` obsahuje tři hlavní typy dat:

1. CGI proměnné

Standardní proměnné definované specifikací CGI, které popisují požadavek:

REQUEST_METHOD: Metoda požadavku (např. `GET`, `POST`).

PATH_INFO: Cesta za doménou (např. `/produkty/detail/5`).

QUERY_STRING: Parametry v URL za otazníkem.

SERVER_NAME a SERVER_PORT: Informace o serveru.

2. WSGI specifické proměnné

Proměnné, které do slovníku přidává samo rozhraní WSGI:

wsgi.input: Proud (stream), ze kterého lze číst tělo požadavku (např. data z formuláře).

wsgi.url_scheme: Protokol (`http` nebo `https`).

wsgi.errors: Proud pro zápis chybových hlášení.

3. HTTP hlavičky

Všechny hlavičky, které poslal prohlížeč, jsou v `environ` dostupné s předponou `HTTP_`:

`HTTP_USER_AGENT` (prohlížeč uživatele)

`HTTP_COOKIE` (uložené cookies)

`HTTP_ACCEPT_LANGUAGE` (preferovaný jazyk)

Příklad obsahu (v kódu)

Pokud byste si nechali vypsat obsah `environ` při přístupu na web, vypadal by přibližně takto:

{
'REQUEST_METHOD': 'GET',
'PATH_INFO': '/index.html',
'SERVER_NAME': 'localhost',
'SERVER_PORT': '8000',
'wsgi.input': <_io.BufferedReader name=11>,
'HTTP_USER_AGENT': 'Mozilla/5.0...',
'HTTP_HOST': 'mojedomena.cz',
...
}

Význam pro vývojáře

Ačkoliv moderní frameworky jako Django nebo Flask schovávají `environ` za elegantní objekty (jako je `request`), znalost tohoto slovníku je zásadní pro:

Psaní vlastního middleware.

Ladění problémů s proxy servery (např. Nginx).

Pochopení toho, jak se přenášejí informace o IP adrese uživatele.

— Související pojmy: WSGI, Python, HTTP