Saltar al contenido principal
Versión: 20 R9

OutgoingMessage

La clase 4D.OutgoingMessage le permite construir mensajes para ser devueltos por las funciones de su aplicación en respuesta a las peticiones REST. Si la respuesta es del tipo 4D.OutgoingMessage, el servidor REST no devuelve un objeto, sino la instancia del objeto de la clase OutgoingMessage.

Normalmente, esta clase puede ser usada en funciones personalizadas HTTP request handler o en funciones declaradas con la palabra clave onHTTPGet y diseñadas para manejar peticiones HTTP GET. Tales peticiones se utilizan, por ejemplo, para implementar funcionalidades como la descarga de archivos, generar y descargar imágenes así como recibir cualquier tipo de contenido a través de un navegador.

Una instancia de esta clase se construye en 4D Server y puede ser enviada al navegador sólo por el servidor REST 4D. Esta clase permite utilizar otras tecnologías distintas de HTTP (por ejemplo, móvil).

Historia
LanzamientoModificaciones
20 R7Clase añadida

Ejemplo

En este ejemplo, una función getFile() es implementada en la Datastore class y puede ser llamada por una petición REST. El objetivo es devolver un archivo testFile.pdf como respuesta a la petición:

Class extends DataStoreImplementation

exposed onHTTPGet Function getFile() : 4D.OutgoingMessage

var $result:=4D.OutgoingMessage.new()
var $file:=File("/RESOURCES/testFile.pdf")

$result.setBody($file.getContent()) // Se trata de contenido binario
$result.setHeader("Content-Type"; "application/pdf")
return $result

Objeto OutgoingMessage

Los objetos 4D.OutgoingMessage ofrecen las siguientes propiedades y funciones:

body : any
el cuerpo del mensaje saliente
headers : Object
los encabezados actuales del mensaje saliente en forma de pares clave/valor
.setBody( body : any )
define el mensaje saliente body
.setHeader( key : Text ; value : Text )
define lla llave key del encabezado del mensaje saliente con el valuer suministrado
.setStatus( status : Integer )
define la propiedad status con el status
status : Integer
el estado actual del mensaje saliente
nota

Un objeto 4D.OutgoingMessage es un objeto no compartible.

.body

body : any

Descripción

La propiedad .body contiene el cuerpo del mensaje saliente. Los siguientes tipos de datos están soportados en la propiedad .body:

  • text
  • blob
  • object
  • image

La propiedad .body es de lectura-escritura.

También puede definir la propiedad .body utilizando la función setBody(), en cuyo caso el encabezado content-type se define automáticamente.

.headers

headers : Object

Descripción

La propiedad .headers contiene los encabezados actuales del mensaje saliente en forma de pares clave/valor.

La propiedad .headers es de sólo lectura. Para definir un encabezado, use la función setHeader().

.setBody()

.setBody( body : any )

ParámetrosTipoDescripción
bodyany->Cuerpo del mensaje saliente

Descripción

La función .setBody() define el mensaje saliente body.

Los siguientes tipos de datos están soportados en el body:

  • Text
  • Blob
  • Object
  • Imagen

Cuando se utiliza esta función, el encabezado content-type se define automáticamente en función del tipo body:

  • Content-Type:text/plain si el cuerpo es un Texto
  • Content-Type:application/octet-stream si el body es un Blob
  • Content-Type:application/json si el body es un objeto
  • Content-Type:image/jpeg, image/gif... si el body es una imagen

Si body no es de un tipo de valor soportado, se devuelve un error.

.setHeader()

.setHeader( key : Text ; value : Text )

ParámetrosTipoDescripción
keyText->Propiedad de encabezado a definir
valueText->Valor de la propiedad del encabezado

Descripción

La función .setHeader() define lla llave key del encabezado del mensaje saliente con el valuer suministrado. Si ambos parámetros no son valores texto, se produce un error.

Al devolver una instancia del objeto 4D.OutgoingMessage, 4D define automáticamente algunos encabezados (por ejemplo, Set-Cookie con WASID4D=... y 4DSID__ProjectName_=....).

nota

Si define un value para la key el encabezado "Content-Type", asegúrese de llamar a esta función después de la llamada a setBody(), porque setBody() llena automáticamente este encabezado. Para obtener una lista de valores del encabezado "Content-Type", consulte la documentación de WEB SEND BLOB.

.setStatus()

.setStatus( status : Integer )

ParámetrosTipoDescripción
statusInteger->Estado a definir

Descripción

La función .setStatus() define la propiedad status con el status.

Si status no es un valor entero, se produce un error.

Para obtener una lista de códigos de estado HTTP, consulte la lista de códigos de estado HTTP en Wikipedia.

.status

status : Integer

Descripción

La propiedad .status contiene el estado actual del mensaje saliente. Esta propiedad puede definirse utilizando la función setStatus().