## Cómo funciona

Cuando se ha configurado el servidor Web para procesar solicitudes HTTP de recursos con extensión ```.dkl```; a través de los mecanismos disponibles; se invoca al intérprete de Devkron con la ruta y nombre del archivo dkl requerido y
 se le proporciona toda la información del contexto HTTP en una variable global denominada: 

```DKL
@http_context
```

El siguiente programa (ejecutado como una página Web) muestra en formato JSON todo el contenido de @http_context.

```DKL
#include "dkli.dkh"

#$
html
{
    ##
    #include "serialize.dkh"
    ##

    body
    {
        p{$"#<to.json(@http_context)>"}
    }
}
```

Para probar el ejemplo, asegúrese de haber instalado y configurado los servicios de su servidor Web (IIS por ejemplo), cree un sitio Web y guarde en la carpeta correspondiente el programa como index.dkl

<img src="img/index-dkl.png"/>

Tras darle formato con alguna utilidad "pretty-json" se puede apreciar mejor:

<img src="img/@http_context-in-json.png"/>

## La estructura @http_context

La variable global de referencia a una estructura @http_context contiene dos miembros principales: request y response.

### Información de la solicitud

El campo request contiene los siguientes miembros:

#### headers
Es una referencia a una estructura que contiene todos los encabezados HTTP de la solicitud.

#### cookies
Es una referencia a una estructura que contiene todas las cookies de la solicitud HTTP.

#### get
Es una referencia a una estructura que contiene todos los parámetros pasados en la cadena de la URL después del delimitador ? (comando GET de HTTP)

#### post
Es una referencia a una estructura que contiene todos los parámetros pasados mediante una solicitud POST codificada como application/x-www-form-urlencoded

Si el cuerpo de la solicitud POST no está codificada como se espera, el miembro no existe o está vacío.

#### post_string
Es una cadena que contiene el contenido del cuerpo de la solicitud POST si no está codificado como multipart/form-data

#### files
Es una referencia a una estructura que contiene todos los archivos enviados mediante POST codificados como multipart/form-data

### Control de la respuesta

El campo response de @http_context permite al programador definir los encabezados de respuesta, el formato y el origen de la misma.
#### headers

El campo headers del miembro response contiene los encabezados de respuesta.

De manera predeterminada, se incluyen los siguientes:
* Content-Type: text/html;charset=utf-8
* X-Powered-By: Devkron

#### output
El miembro output de response es una cadena que indica el origen de la salida y puede ser alguno de los siguientes:
* standard – Es el valor predeterminado e indica que el contenido de la respuesta será la salida del procesamiento del programa Devkron (un árbol XML)
* text – Establece que la salida será la cadena de texto indicada en el miembro text de response
* binary – Indica que la salida será un flujo de bytes referenciados por el miembro binary de reponse.

#### text
Este miembro contiene la cadena usada como contenido de la respuesta si se ha establecido 'text' como valor para output.

#### binary
Este miembro contiene una referencia a un array de bytes usado como la respuesta si se ha establecido 'binary' como valor para output.

