Herramientas de usuario

Herramientas del sitio


code:concepts

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
code:concepts [2013/08/23 11:09]
alfred [Servicios Web]
code:concepts [2020/05/09 09:25] (actual)
Línea 66: Línea 66:
  
 ==== WSGI ==== ==== WSGI ====
 +De //Web Server Gateway Interface//,​ es una definición de métodos que han de tener los frameworks\APIs Python para el desarrollo de aplicaciones web. Esto permite prescindir de módulos de server tales como CGI, FastCGI o mod_python. ​
  
 +Un server WSGI (WSGI compliant) simplemente recibe una petición del cliente, la pasa a la aplicación y devuelve la respuesta. Es la aplicación (o framework), que hace de middleware, la que ha de proveer de los detalles. Para ello se usa una función de callback en el lado de aplicación. ​
 +
 +Un framework WSGI puede contener componentes que cambien las variables de entorno según la URL, permitir múltiples aplicaciones,​ balancear la carga...
 +
 +La interface de la función recibe como parámetros un environ (variables de entorno) y una función a la que enviar la cabecera de la respuesta. Luego, el string que devuelva esa función será lo que se devuelva como respuesta:
 +<code python>
 +from wsgiref.simple_server import make_server
 +
 +def hello(environ,​ start_response):​
 +    start_response('​200 OK',​[('​Content-type','​text/​plain'​)])
 +    return ['​Hello world!'​]
 +    ​
 +httpd = make_server('',​8000,​ hello).serve_forever()
 +</​code>​
 +
 +El diccionario ''​environ''​ contiene:
 +  * ''​REQUEST_METHOD'':​ método "​GET",​ "​POST",​ tec.
 +  * ''​SCRIPT_NAME'':​ la parte inicial de la "​ruta",​ que corresponde a la aplicación
 +  * ''​PATH_INFO'':​ la segunda parte de la "​ruta",​ determina la "​ubicación"​ virtual dentro de la aplicación
 +  * ''​QUERY_STRING'':​ la porción de la URL que sigue al "?",​ si existe
 +  * ''​CONTENT_TYPE'',​ ''​CONTENT_LENGTH''​ de la petición HTTP
 +  * ''​SERVER_NAME'',​ ''​SERVER_PORT''​ que combinadas con SCRIPT_NAME y PATH_INFO dan la URL
 +  * ''​SERVER_PROTOCOL'':​ la versión del protocolo ("​HTTP/​1.0"​ or "​HTTP/​1.1"​)
 +  * Variables ''​HTTP_''​
 ===== Programación declarativa ===== ===== Programación declarativa =====
 El código imperativo describe **cómo** se hace algo, mientras el declarativo describe **qué** se está haciendo. \\  El código imperativo describe **cómo** se hace algo, mientras el declarativo describe **qué** se está haciendo. \\ 
code/concepts.1377256166.txt.gz · Última modificación: 2020/05/09 09:24 (editor externo)