title: Web Server Gateway Interface
text: # 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. È quindi l'interfaccia standard del web service per la programmazione in Python.
  
  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.
  
  ## Storia e sviluppo
  
  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.
  
  ## Esempio
  
  Un “Hello world” compatibile con WSGI scritta in Python:
  
  Dove:
  
  * Linea 1: definisce una funzione chiamata application, che prende due parametri, environ and start_response. environ è un dizionario contenente le variabili d'ambiente in CGI. start_response è una funzione chiamante con due parametri status e response_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.
  