> For the complete documentation index, see [llms.txt](https://doc.velneo.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://doc.velneo.com/28/velneo-vdevelop/scripts/lenguajes/javascript/clases/vrequest.md).

# 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](/28/velneo-vdevelop/scripts/lenguajes/javascript/clases/vresponse.md), podremos definir la respuesta.

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

## Funciones

**De cabecera**

| Retorno | Función                                                                                                 |
| ------- | ------------------------------------------------------------------------------------------------------- |
| String  | [header](/28/velneo-vdevelop/scripts/lenguajes/javascript/clases/vrequest.md#header)( String szHeader ) |
| Array   | [headerKeys](/28/velneo-vdevelop/scripts/lenguajes/javascript/clases/vrequest.md#headerkeys)()          |

**De GET**

| Retorno | Función                                                                                        |
| ------- | ---------------------------------------------------------------------------------------------- |
| String  | [GET](/28/velneo-vdevelop/scripts/lenguajes/javascript/clases/vrequest.md#get)( String szKey ) |
| Array   | [GETkeys](/28/velneo-vdevelop/scripts/lenguajes/javascript/clases/vrequest.md#getkeys)()       |

**De POST**

| Retorno | Función                                                                                          |
| ------- | ------------------------------------------------------------------------------------------------ |
| String  | [POST](/28/velneo-vdevelop/scripts/lenguajes/javascript/clases/vrequest.md#post)( String szKey ) |
| Array   | [POSTKeys](/28/velneo-vdevelop/scripts/lenguajes/javascript/clases/vrequest.md#postkeys)()       |

**De URI**

| Retorno | Función                                                                                          |
| ------- | ------------------------------------------------------------------------------------------------ |
| String  | [pathInfo](/28/velneo-vdevelop/scripts/lenguajes/javascript/clases/vrequest.md#pathinfo)()       |
| String  | [unparsedUri](/28/velneo-vdevelop/scripts/lenguajes/javascript/clases/vrequest.md#unparseduri)() |
| String  | [uri](/28/velneo-vdevelop/scripts/lenguajes/javascript/clases/vrequest.md#uri)()                 |

**De cuerpo**

| Retorno                                                                             | Función                                                                                  |
| ----------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
| String                                                                              | [body](/28/velneo-vdevelop/scripts/lenguajes/javascript/clases/vrequest.md#body)()       |
| String                                                                              | [method](/28/velneo-vdevelop/scripts/lenguajes/javascript/clases/vrequest.md#method)()   |
| [VByteArray](/28/velneo-vdevelop/scripts/lenguajes/javascript/clases/vbytearray.md) | [rawBody](/28/velneo-vdevelop/scripts/lenguajes/javascript/clases/vrequest.md#rawbody)() |

## 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](/28/velneo-vdevelop/scripts/lenguajes/javascript/clases/vbytearray.md).

## 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];
```
