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

Próxima revisión
Revisión previa
code:concepts [2011/03/29 10:53]
alfred creado
code:concepts [2020/05/09 09:25] (actual)
Línea 21: Línea 21:
   * **TCP**: Protocolo que garantiza que los datos han sido entregados correctamente (es decir, si no es así ocurre un error en el envio). Mediante el cual se utilizan aplicaciones HTTP, SMTP, SSH, FTP...   * **TCP**: Protocolo que garantiza que los datos han sido entregados correctamente (es decir, si no es así ocurre un error en el envio). Mediante el cual se utilizan aplicaciones HTTP, SMTP, SSH, FTP...
   * **UDP**: Protocolo basado en datagramas (paquete independiente,​ cada uno con información del emisor), permite el envio sin necesidad de establecer una conexión. No tiene confirmación (ni de entrega ni de recepción) ni control de flujo.   * **UDP**: Protocolo basado en datagramas (paquete independiente,​ cada uno con información del emisor), permite el envio sin necesidad de establecer una conexión. No tiene confirmación (ni de entrega ni de recepción) ni control de flujo.
 +
 +
  
  
Línea 42: Línea 44:
 === Content-Type === === Content-Type ===
 En el header de una respuesta http enviaremos el tipo de datos que devolvemos. Los más conocidos: En el header de una respuesta http enviaremos el tipo de datos que devolvemos. Los más conocidos:
-  * ''​text/plain'': ​Texto plano. +<​code>​ 
-  * ''​text/html'': ​Texto html. +text/plain Texto plano 
-  * ''​application/​json'':​ Para JSON. +text/plain;​charset=utf-8 Texto plano con codificación utf-8 
-  * ''​image/jpeg''​''​image/​gif''​''​image/​png'':​ Para los distintos tipos de imágenes. +text/​html Código ​html 
- +text/​xml Código xml 
- +text/​csv Código csv 
- +application/​json Código json 
 +image/type Una imágentype puede ser: gif, jpeg, png 
 +</​code>​
  
 ==== Servicios Web ==== ==== Servicios Web ====
Línea 62: Línea 65:
   * [[http://​en.wikipedia.org/​wiki/​JsonML|JsonML]],​ mezcla de JSON y XML.   * [[http://​en.wikipedia.org/​wiki/​JsonML|JsonML]],​ mezcla de JSON y XML.
  
 +==== 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.1301395988.txt.gz · Última modificación: 2020/05/09 09:24 (editor externo)