Web Server Gateway Interface
Il Web Server Gateway Interface (WSGI) è un protocollo di trasmissione che stabilisce e descrive comunicazioni ed interazioni tra server ed applicazioni web scritte nel linguaggio Python.[1] È quindi l'interfaccia standard del web service per la programmazione in Python.[2]
In parole povere, il protocollo specifica come i server si facciano carico delle richieste provenienti dai browser/client ed inoltrino le informazioni richieste alle relative applicazioni, oltre a come utilizzare le informazioni di cui si sono fatti carico e a come rispondere.[3][4]
Storia e sviluppo
[modifica | modifica wikitesto]Storicamente, gli applicativi per il web scritti in Python risultavano problematici per i nuovi utenti che si affacciavano a questo linguaggio, in quanto la scelta della struttura da utilizzare in ambito web limitava di conseguenza quella sui server web usufruibili, e viceversa. I programmi in Python erano spesso concepiti per CGI, FastCGI, mod python od anche per interfacce API specifiche di web-server.
WSGI è stato creato come un'interfaccia di basso livello tra i server web e le applicazioni web finalizzata a fornire uno standard base per le reciproche interazioni.[3]
Caratteristiche
[modifica | modifica wikitesto]Esempio
[modifica | modifica wikitesto]Un “Hello world” compatibile con WSGI scritta in Python:
def application(environ, start_response):
start_response('200 OK', [('Content-Type', 'text/plain')])
yield 'Hello World\n'
Dove:
- Linea 1: definisce una funzione[5] chiamata
application
, che prende due parametri,environ
andstart_response
.environ
è un dizionario contenente le variabili d'ambiente in CGI.start_response
è una funzione chiamante con due parametristatus
eresponse_headers
. - Linea 2: chiama
start_response
, specificando "200 OK" come status un "Content-Type" header. - Linea 3: ritorna il corpo della risposta come una stringa di lettere.
Note
[modifica | modifica wikitesto]- ^ Il WSGI
- ^ Info
- ^ a b Info sulle caratteristiche
- ^ Info sulle caratteristiche - 2
- ^ i.e. "a chiamante, metodo, classe, o una istanza con una
__call__
method" [senza fonte]
Voci correlate
[modifica | modifica wikitesto]Collegamenti esterni
[modifica | modifica wikitesto]- WSGI wiki, su wsgi.org.
- Specifiche sul modulo della libreria standard Python, su docs.python.org.
- Python Paste, su pythonpaste.org.