Obsah
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.
