Découvrez la SaltAPI !

Nous avons pris soin de documenter au mieux notre code, afin de rendre la SaltAPI accessible à tous. Vous trouverez ici toutes les informations nécessaires pour comprendre le fonctionnement de notre HTTPd, ainsi que son système de modules.

Pensez bien à lire le README afin de bien comprendre les subtilités de SaltAPI : ICI.


Voici la liste des sections, toutes illustrées :

Le flux d'exécution

Une vue globale du fonctionnement de SaltAPI représentée par le flux d'exécution est disponible pour nos lecteurs.

Plus de détails :

Pour lancer le serveur web, l'utilisateur lance la commande ./httpd.
Le Module Loader n'est pas un module, mais juste une classe inscrite dans le binaire httpd qui va permettre de charger des modules. Après le lancement du serveur ici représenté avec HTTPd Start, le Module Loader va être exécuté par celui-ci. Le Module Loader va charger le Core Module. Dès lors, nous sortons de ladite "coquille vide" qu'est le serveur web. Le Core Module va à son tour charger le Config Loader Module en utilisant le Module Loader dont il possède une référence. Une configuration par défaut sera appliquée par le Config Loader Module comme par exemple écouter sur le port 80. Par la suite, une configuration externe du serveur va être cherchée par le Config Loader Module qui va utliser le File Serve Module afin de lire le contenu du fichier. Si un fichier de configuration a été trouvé et est qu'il est correct, la configuration externe va être appliquée au serveur.

Une fois la configuration appliquée au serveur, les modules listés dans le fichier de configuration (son format dépend de vous) seront chargés. Le Network Module couplé à SSL/TLS Module sont dès lors chargés de démarrer la couche réseau et d'écouter sur les différents ports spécifiés dans la configuration du serveur. Lors d'une requête HTTP d'un client, cette requête est stockée dans une Request list afin du subir un traitement future. Pour chaque requête dans la Request list, une Processing list générique est générée. Elle contient par défaut, différentes actions définies dans le fichier de configuration. Il est dès lors possible de traiter plusieurs requêtes de manière simultané, chacune dans un thread.

Une requête HTTP = une Processing list associée. Toutes les méthodes des modules HTTP de la Processing list reçoivent en paramètres les objets req, res et pl. L'objet req est une représentation de la requête reçue, on la remplira après avoir parsé la requête du client. L'objet res est celui qu'il faudra remplir en fonction de req. Enfin, l'objet pl est la processing liste associée à la requête. Il est possible d'insérer des actions dans la Pocessing list à n'importe quel endroit. Par exemple, si l'on détecte que le body de la requête HTTP est compressé, on peut ajouter comme action suivante de le décompresser afin de faciliter son traitement par la suite.

L'architecture

Voici deux diagrammes de classes qui modélisent l'architecture de SaltAPI.

Les interactions

C'est ici que vous découvrez les interactions entre les différents modules de SaltAPI.