Erlang - Programmation Web

À Erlang, le inets libraryest disponible pour créer des serveurs Web à Erlang. Examinons quelques-unes des fonctions disponibles dans Erlang pour la programmation Web. On peut implémenter le serveur HTTP, également appelé httpd pour gérer les requêtes HTTP.

Le serveur implémente de nombreuses fonctionnalités, telles que -

  • Secure Sockets Layer (SSL)
  • Interface de script Erlang (ESI)
  • Interface de passerelle commune (CGI)
  • Authentification de l'utilisateur (à l'aide de Mnesia, Dets ou base de données de texte brut)
  • Format de fichier journal commun (avec ou sans prise en charge de disk_log (3))
  • Alias ​​d'URL
  • Mappages d'action
  • Listes de l'annuaire

Le premier travail consiste à démarrer la bibliothèque Web via la commande.

inets:start()

L'étape suivante consiste à implémenter la fonction de démarrage de la bibliothèque inets afin que le serveur Web puisse être implémenté.

Voici un exemple de création d'un processus de serveur Web à Erlang.

Par exemple

-module(helloworld). 
-export([start/0]). 

start() ->
   inets:start(), 
   Pid = inets:start(httpd, [{port, 8081}, {server_name,"httpd_test"}, 
   {server_root,"D://tmp"},{document_root,"D://tmp/htdocs"},
   {bind_address, "localhost"}]), io:fwrite("~p",[Pid]).

Les points suivants doivent être notés à propos du programme ci-dessus.

  • Le numéro de port doit être unique et ne doit être utilisé par aucun autre programme. lehttpd service serait démarré sur ce port no.

  • le server_root et document_root sont des paramètres obligatoires.

Production

Voici la sortie du programme ci-dessus.

{ok,<0.42.0>}

Pour mettre en œuvre un Hello world web server à Erlang, effectuez les étapes suivantes -

Step 1 - Implémentez le code suivant -

-module(helloworld). 
-export([start/0,service/3]). 

start() ->
   inets:start(httpd, [ 
      {modules, [ 
         mod_alias, 
         mod_auth, 
         mod_esi, 
         mod_actions, 
         mod_cgi, 
         mod_dir,
         mod_get, 
         mod_head, 
         mod_log, 
         mod_disk_log 
      ]}, 
      
      {port,8081}, 
      {server_name,"helloworld"}, 
      {server_root,"D://tmp"}, 
      {document_root,"D://tmp/htdocs"}, 
      {erl_script_alias, {"/erl", [helloworld]}}, 
      {error_log, "error.log"}, 
      {security_log, "security.log"}, 
      {transfer_log, "transfer.log"}, 
      
      {mime_types,[ 
         {"html","text/html"}, {"css","text/css"}, {"js","application/x-javascript"} ]} 
   ]). 
         
service(SessionID, _Env, _Input) -> mod_esi:deliver(SessionID, [ 
   "Content-Type: text/html\r\n\r\n", "<html><body>Hello, World!</body></html>" ]).

Step 2- Exécutez le code comme suit. Compilez le fichier ci-dessus, puis exécutez les commandes suivantes danserl.

c(helloworld).

Vous obtiendrez la sortie suivante.

{ok,helloworld}

La commande suivante est -

inets:start().

Vous obtiendrez la sortie suivante.

ok

La commande suivante est -

helloworld:start().

Vous obtiendrez la sortie suivante.

{ok,<0.50.0>}

Step 3 - Vous pouvez maintenant accéder à l'url - http://localhost:8081/erl/hello_world:service.