Aller au contenu principal
Version: Next

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
ReleaseModifications
20 R7Classe 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
note

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ètresTypeDescription
bodyany->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ètresTypeDescription
keyText->Propriété de header à définir
valueText->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_=....).

note

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ètresTypeDescription
statusInteger->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().