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
Lanzamiento | Modificaciones |
---|---|
20 R7 | Clase 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 |
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ámetros | Tipo | Descripción | |
---|---|---|---|
body | any | -> | 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ámetros | Tipo | Descripción | |
---|---|---|---|
key | Text | -> | Propiedad de encabezado a definir |
value | Text | -> | 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_=....
).
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ámetros | Tipo | Descripción | |
---|---|---|---|
status | Integer | -> | 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()
.