Portail / Sujets autour de la programmation / Programmation C/C++ sous Linux / Serveur d'application avec Qt 6 / Documentation technique(Sommaire)

Service SrvPageError.

Mise à jour du 18/06/2024.

Description

Le service SrvPageError repose sur la classe du même nom. Cette classe est intégrée à la librairie webapp. Ce service fournit une page HTML qui décrite une erreur avec :

  1. Un message d'erreur.
  2. Une description en etxte libre. Cette description est généraklement utilisée pour donner plus de détails ou présenter des suggestions.
  3. Un lien qui permet à l'utilisateur de poursuivre sa navigation.

Le message d'erreur, sa description, le libellé du lien et son URL sont des données paramétrables.

Fonctionnement

La librairie webapp dispose d'une page "patron" HTML personnalisable. Si pour une raison ou une autre, le chargement de cette page échoue, une page HTML est créée sous forme d'un DOM via la libaririe html.

Le code de statut HTTP imposé par ce service est 400 (Bad Request).

Ce service n'utilise pas la session de navigation de l'utilisateur.

Paramètres

Comme tout service, la production de la page se fait via la méthode :

void SrvErrorPage::process(const QHttpServerRequest& request, QHttpServerResponse& response,
        shared_ptr<Session> spSession, shared_ptr<<QMap<QString,QStringList>> httpParameters = nullptr,
        shared_ptr<QMap<QString,QString>> spVariables)

Ici, seuls les paramètres request, response et spVariables sont pertinents. Vous n'avez aucune action sur le paramètre request qui est livré par l'application au moment où l'application invoque le service ni sur le paramètre response qui contient au retour la réponse HTTP du service.

Le seul paramètre sur lequel vous ayez une action de personnalisation est spVariables. Ce paramètre est un pointeur intelligent sur un dictionnaire de chaînes de caractères. C'est ce dictionnaire qui permet de personnaliser la réponse du service. La tableau qui suit énumère les clefs autorisées ainsi que leur rôle :

ClefRôle de la valeur
descriptionAttribut "description" d'une balise <meta> de l'en-tête HTML.
customStylesChaîne de caractères contenant la définition de classes de style à embarquer dans l'en-tête de la page HTML.
customScriptChaîne de caractères contenant un bloc de code JavaScript à ajouter au sein d'une balise <script> en fin de corps HTML.
messageTexte du message d'erreur.
detailDétails associés à l'erreur ou suggestions.
linkLabelLibellé du lien de poursuite de la navigation.
returnLinkURL du lien de poursuite de la navigation.

Utilisation avancée.

La clef customStyles permet d'embarquer des classes de style pour adapter la page au plus proche d'une charte graphique. La plupart des composants HTML disposent d'un attribut id qui permet de les personnaliser facilement via une ou plusieurs classes de style. Commme le code HTML de la page est susceptible d'évoluer il n'est pas utile de fournir la liste de ces identifiants. Nous recommandons de produire la page brute, d'en récupérer les identifiants puis d'appliquer les classes de style afin d'obtenir les effets souhaités. Les méthodes fromTemplate() et fromScratch()permettent de produire cette page sans besoin d'une infrastructure web puis de maquetter votre adaptation.

De la même manière la clef customScript permet d'embarquer du code JavaScript de manière à produire des effets particuliers ou complémentaires. Il est recommandé de le faire à partir d'une maquette dont la base est fournie par le processus décrit précédemment.

Rédaction par Jean-Marie Piatte (1983-2021)