Aller au contenu principal
Version: Next

Objet Web Server

Un projet 4D peut démarrer et piloter un serveur Web pour l'application principale (hôte) ainsi que pour chaque composant hébergé.

Par exemple, si vous avez installé deux composants dans votre application principale, vous pouvez démarrer et contrôler jusqu'à trois serveurs Web indépendants à partir de votre application :

  • un serveur web pour l'application hôte,
  • un serveur web pour le composant n°1,
  • un serveur web pour le composant n°2.

En dehors de la mémoire, il n'y a pas de limite au nombre de composants et donc, de serveurs Web, pouvant être rattachés à un seul projet d'application 4D.

Chaque serveur web 4D, y compris le serveur web de l'application principale, est exposé comme un objet spécifique de la classe 4D.WebServer. Une fois instancié, un objet serveur Web peut être géré depuis l'application courante ou depuis n'importe quel composant à l'aide d'un grand nombre de propriétés et de fonctions.

Les commandes WEB héritées du langage 4D sont prises en charge mais ne peuvent pas sélectionner le serveur Web auquel elles s'appliquent (voir ci-dessous).

Chaque serveur web (application hôte ou composant) peut être utilisé dans son propre contexte, notamment :

  • les appels vers la méthode base On Web Authentication et On Web Connection
  • le traitement des balises 4D et les appels de méthodes,
  • sessions web et gestion du protocole TLS.

Cela vous permet de développer des composants indépendants et des fonctionnalités qui accompagnent leurs propres interfaces Web.

Instancier un objet serveur web

L'objet serveur Web de l'application hôte (serveur Web par défaut) est automatiquement chargé par 4D au démarrage. Ainsi, si vous écrivez dans un projet nouvellement créé :

$nbSrv:=WEB Server list.length   
//la valeur de $nbSrv est 1

To instantiate a web server object, call the WEB Server command:

	//créer une variable objet de la classe 4D.WebServer
var webServer : 4D.WebServer
//appeler le serveur web depuis le contexte courant
webServer:=WEB Server

//équivalent à
webServer:=WEB Server(Web server database)

Si l'application utilise des composants et que vous souhaitez appeler :

  • le serveur Web de l'application hôte à partir d'un composant ou
  • le serveur qui a reçu la requête (quel que soit le serveur)

vous pouvez également utiliser :

var webServer : 4D.WebServer 
//appeler le serveur web hôte depuis un composant
webServer:=WEB Server(Web server host database)
//appeler le serveur web cible
webServer:=WEB Server(Web server receiving request)

Fonctions du serveur web

Un objet de classe Web server contient les fonctions suivantes :

FonctionsParamètresValeur retournéeDescription
start()settings (objet)status (object)Démarre le serveur web
stop()--Stoppe le serveur web

Pour démarrer et arrêter un serveur Web, il suffit d'appeler les fonctions start() et stop() de l'objet serveur Web :

var $status : Object
//démarrer un serveur web avec les paramètres par défaut
$status:=webServer.start()
//démarrer le serveur web avec des paramètres personnalisés
//$settings objet contient les propriétés du serveur web
webServer.start($settings)

//stopper le serveur web
$status:=webServer.stop()

Propriétés du serveur web

Un objet serveur Web contient diverses propriétés qui configurent le serveur Web.

Ces propriétés sont définies :

  1. à l'aide du paramètre settings de la fonction .start() (sauf pour les propriétés en lecture seule, voir ci-dessous),
  2. si elles ne sont pas utilisées, à l'aide de la commande WEB SET OPTION (applications hôtes uniquement),
  3. si elles ne sont pas utilisées, dans les propriétés de l'application hôte ou du composant.
  • Si le serveur Web n'est pas démarré, les propriétés contiennent les valeurs qui seront utilisées au prochain démarrage du serveur Web.
  • Si le serveur Web est démarré, les propriétés contiennent les valeurs réelles utilisées par le serveur Web (les paramètres par défaut peuvent avoir été remplacés par le paramètre settings de la fonction .start().

isRunning, name, openSSLVersion et perfectForwardSecrecy sont des propriétés en lecture seule qui ne peuvent pas être prédéfinies dans le paramètre objet settings pour la fonction start().

Portée des commandes 4D Web

Le langage 4D contient plusieurs commandes permettant de contrôler le serveur Web. Cependant, ces commandes sont destinées à fonctionner avec un seul serveur Web (par défaut). Lorsque vous utilisez ces commandes dans le contexte d'objets serveur Web, assurez-vous que leur portée est appropriée.

CommandPortée
SET DATABASE PARAMETERApplication hôte du serveur web
WEB CLOSE SESSIONServeur Web ayant reçu la requête
WEB GET BODY PARTServeur Web ayant reçu la requête
WEB Get body part countServeur Web ayant reçu la requête
WEB Get Current Session IDServeur Web ayant reçu la requête
WEB GET HTTP BODYServeur Web ayant reçu la requête
WEB GET HTTP HEADERServeur Web ayant reçu la requête
WEB GET OPTIONApplication hôte du serveur web
WEB Get server infoApplication hôte du serveur web
WEB GET SESSION EXPIRATIONServeur Web ayant reçu la requête
WEB Get session process countServeur Web ayant reçu la requête
WEB GET STATISTICSApplication hôte du serveur web
WEB GET VARIABLESServeur Web ayant reçu la requête
WEB Is secured connectionServeur Web ayant reçu la requête
WEB Is server runningApplication hôte du serveur web
WEB SEND BLOBServeur Web ayant reçu la requête
WEB SEND FILEServeur Web ayant reçu la requête
WEB SEND HTTP REDIRECTServeur Web ayant reçu la requête
WEB SEND RAW DATAServeur Web ayant reçu la requête
WEB SEND TEXTServeur Web ayant reçu la requête
WEB SET HOME PAGEApplication hôte du serveur web
WEB SET HTTP HEADERServeur Web ayant reçu la requête
WEB SET OPTIONApplication hôte du serveur web
WEB SET ROOT FOLDERApplication hôte du serveur web
WEB START SERVERApplication hôte du serveur web
WEB STOP SERVERApplication hôte du serveur web
WEB Validate digestServeur Web ayant reçu la requête