Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
|
code:concepts [2011/11/23 07:51] alfred |
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 47: | Línea 48: | ||
| text/plain;charset=utf-8 Texto plano con codificación utf-8 | text/plain;charset=utf-8 Texto plano con codificación utf-8 | ||
| text/html Código html | text/html Código html | ||
| + | text/xml Código xml | ||
| + | text/csv Código csv | ||
| application/json Código json | application/json Código json | ||
| image/type Una imágen, type puede ser: gif, jpeg, png | image/type Una imágen, type puede ser: gif, jpeg, png | ||
| 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. \\ | ||