OutgoingMessage
La classe 4D.OutgoingMessage
vous permet de construire des messages qui seront renvoyés par les fonctions de votre application en réponse aux requêtes REST. Lorsque la réponse est de type 4D.OutgoingMessage
, le serveur REST ne renvoie pas un objet mais une instance d'objet de la classe OutgoingMessage
.
Typiquement, cette classe peut être utilisée dans des fonctions personnalisées de HTTP request handler ou dans des fonctions déclarées avec le mot-clé onHttpGet
et conçues pour gérer des requêtes HTTP GET. Ces requêtes sont utilisées, par exemple, pour implémenter des fonctionnalités telles que le téléchargement de fichier, la génération et le téléchargement d'images ainsi que la réception de tout content-type via un navigateur.
Une instance de cette classe est construite sur 4D Server et peut être envoyée au navigateur via le serveur REST 4D uniquement. Cette classe permet d'utiliser d'autres technologies que HTTP (par exemple, mobile).
Historique
Release | Modifications |
---|---|
20 R7 | Classe ajoutée |
Exemple
Dans cet exemple, une fonction getFile()
est implémentée dans la Datastore class et peut être appelée par une requête REST. Le but est de retourner un fichier testFile.pdf en réponse à la requête :
Class extends DataStoreImplementation
exposed onHTTPGet Function getFile() : 4D.OutgoingMessage
var $result:=4D.OutgoingMessage.new()
var $file:=File("/RESOURCES/testFile.pdf")
$result.setBody($file.getContent()) // contenu binaire
$result.setHeader("Content-Type"; "application/pdf")
return $result
Objet OutgoingMessage
Les objets 4D.OutgoingMessage fournissent les propriétés et fonctions suivantes :
body : any le body du message sortant |
headers : Object les headers courants du message sortant sous forme de paires clé/valeur |
.setBody( body : any ) définit le body du message sortant |
.setHeader( key : Text ; value : Text ) fixe la clé key du header du message sortant avec la value fournie |
.setStatus( status : Integer ) définit la propriété status à la valeur status passée |
status : Integer le statut courant du message sortant |
Un objet 4D.OutgoingMessage est non partageable.
.body
body : any
Description
La propriété .body
contient le body du message sortant. Les types de données suivants sont pris en charge dans la propriété .body
:
- text
- blob
- object
- image
La propriété .body
est en lecture-écriture.
Vous pouvez également définir la propriété .body
en utilisant la fonction setBody()
, auquel cas l'en-tête content-type
est automatiquement défini.
.headers
headers : Object
Description
La propriété .headers
contient les headers courants du message sortant sous forme de paires clé/valeur.
La propriété .headers
est en lecture seule. Pour définir un header, utilisez la fonction setHeader()
.
.setBody()
.setBody( body : any )
Paramètres | Type | Description | |
---|---|---|---|
body | any | -> | Body du message sortant |
Description
La fonction .setBody()
définit le body du message sortant.
Les types de données suivants sont pris en charge dans la propriété body :
- Text
- Blob
- Object
- Image
Lorsque cette fonction est utilisée, le header content-type est automatiquement défini en fonction du type de body :
- Content-Type:text/plain si le body est un texte
- Content-Type:application/octet-stream si le body est un Blob
- Content-Type:application/json si le body est un objet
- Content-Type:image/jpeg, image/gif... si le body est une image
Si body n'est pas un type de valeur pris en charge, une erreur est renvoyée.
.setHeader()
.setHeader( key : Text ; value : Text )
Paramètres | Type | Description | |
---|---|---|---|
key | Text | -> | Propriété de header à définir |
value | Text | -> | Valeur de la propriété de header |
Description
La fonction .setHeader()
fixe la clé key du header du message sortant avec la value fournie. Si les deux paramètres ne sont pas des valeurs texte, une erreur est générée.
Lorsqu'il renvoie une instance d'objet 4D.OutgoingMessage, 4D définit automatiquement certains headers (par exemple Set-Cookie
avec WASID4D=...
et 4DSID__ProjectName_=....
).
Si vous définissez une value pour la key du header "Content-Type", assurez-vous d'appeler cette fonction après l'appel à setBody()
, car setBody()
remplit automatiquement ce header. Pour une liste des valeurs du header "Content-Type", veuillez vous référer à la documentation de WEB SEND BLOB
.
.setStatus()
.setStatus( status : Integer )
Paramètres | Type | Description | |
---|---|---|---|
status | Integer | -> | Statut à définir |
Description
La fonction .setStatus()
définit la propriété status
à la valeur status passée.
Si status n'est pas un nombre entier, une erreur est générée.
Pour une liste des codes de statut HTTP, veuillez consulter la liste des codes de statut HTTP sur Wikipedia.
.status
status : Integer
Description
La propriété .status
contient le statut courant du message sortant. Cette propriété peut être définie à l'aide de la fonction setStatus()
.