# VRequest

VRequest es un objeto javascript que representa una petición realizada a través de web a Velneo vModApache.

theRequest se crea automáticamente para cada petición realizada, y permite acceder a la petición para obtener información y preparar la respuesta.

Con ayuda de la clase [VResponse](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vresponse), podremos definir la respuesta.

De esta forma podemos gestionar de forma dinámica las peticiones web en un servidor Apache con Velneo vModApache.

## Indice de funciones

### **De cabecera**

String [header](#header)( String szHeader )

Array [headerKeys](#headerkeys)()

### **De GET**

String [GET](#get)( String szKey )

Array [GETkeys](#getkeys)()

### **De POST**

String [POST](#post)( String szKey )

Array [POSTkeys](#postkeys)()

### **De URI**

String [pathInfo](#pathinfo)()

String [unparsedUri](#unparseduri)()

String [uri](#uri)()

### **De cuerpo**

String [body](#body)()

String [method](#method)()

VByteArray [rawBody](#rawbody)()

### Generales

String [ip](#string-ip)()

## Documentación de funciones

### Funciones de cabecera

#### String header( String szHeader ) <a href="#header" id="header"></a>

Devuelve el valor de la cabecera que indicamos como parámetro.

Parámetros:

* szHeader: cadena con el nombre de la cabecera cuyo valor queremos obtener.

#### Array headerKeys() <a href="#headerkeys" id="headerkeys"></a>

Devuelve un array de cadenas que contiene los nombres de cabecera obtenidos de la petición.

### Funciones de GET

#### String GET( String szKey ) <a href="#get" id="get"></a>

Devuelve el valor correspondiente a la variable cuyo nombre indicamos como parámetro.

Parámetros:

* szKey: cadena con el nombre de la variable cuyo valor queremos obtener.

#### Array GETkeys() <a href="#getkeys" id="getkeys"></a>

Devuelve un array de cadenas con los nombres de las variables recibidas en la petición.

### Funciones de POST

#### String POST( String szKey ) <a href="#post" id="post"></a>

Devuelve el valor correspondiente a la variable cuyo nombre indicamos como parámetro.

Parámetros:

* szKey: cadena con el nombre de la variable cuyo valor queremos obtener.

{% hint style="info" %}
Esta función es válida para el método x-www-form-urlencoded.
{% endhint %}

Para multipart/form debemos procesar la salida de la función body().

#### Array POSTkeys() <a href="#postkeys" id="postkeys"></a>

Devuelve un array de cadenas con los nombres de las variables recibidas en la petición.

{% hint style="info" %}
Esta función es válida para el método x-www-form-urlencoded.
{% endhint %}

Para multipart/form debemos procesar la salida de la función body().

### Funciones de URI

#### String pathInfo() <a href="#pathinfo" id="pathinfo"></a>

Devuelve de la petición la parte correspondiente a la senda.

```javascript
// Ejemplo para url: PROCESO.PRO?pp=1
pathInfo() = /PROCESO.PRO
```

#### String unparsedUri() <a href="#unparseduri" id="unparseduri"></a>

Devuelve la URI completa sin parsear.

```javascript
// Ejemplo para url: PROCESO.PRO?pp=1
unparsedUri() = /velneo/PROCESO.PRO?pp=1
```

#### String uri() <a href="#uri" id="uri"></a>

Devuelve de la petición la URI completa sin las variables.

```javascript
// Ejemplo para url: PROCESO.PRO?pp=1
uri() = /velneo/PROCESO.PRO
```

### Funciones de cuerpo

#### String body() <a href="#body" id="body"></a>

Devuelve el contenido del cuerpo de la petición.

{% hint style="success" %}
La salida de la función body() es string, por lo que los ficheros binarios han de enviarse codificados en Base64.
{% endhint %}

#### String method() <a href="#method" id="method"></a>

Devuelve el método correspondiente a la petición.

#### VByteArray rawBody() <a href="#rawbody" id="rawbody"></a>

Devuelve el contenido del cuerpo de la petición como binario en un objeto de la clase [VByteArray](https://doc.velneo.com/velneo-vdevelop/scripts/lenguajes/javascript/clases/vbytearray).

### Funciones generales

#### String ip()

Devuelve la IP de la petición.

## Ejemplos

### Ejemplo de manejo de binarios

```javascript
// Creamos el objeto de la clase VByteArray para recibir el cuerpo binario
var baBody= new VByteArray;

// Obtenemos el cuerpo binario
baBody = theRequest.rawBody();

// Procesamos lo obtenido
var length = baBody.length;
var firstChar = baBody[0];
```
