Erlang - Programación web
En Erlang, el inets libraryestá disponible para construir servidores web en Erlang. Veamos algunas de las funciones disponibles en Erlang para programación web. Se puede implementar el servidor HTTP, también conocido como httpd para manejar solicitudes HTTP.
El servidor implementa numerosas funciones, como:
- Capa de sockets seguros (SSL)
- Interfaz de secuencias de comandos Erlang (ESI)
- Interfaz de puerta de enlace común (CGI)
- Autenticación de usuario (usando Mnesia, Dets o una base de datos de texto sin formato)
- Formato de archivo de registro común (con o sin soporte disk_log (3))
- Alias de URL
- Mapeos de acciones
- Listados de directorio
El primer trabajo es iniciar la biblioteca web mediante el comando.
inets:start()
El siguiente paso es implementar la función de inicio de la biblioteca inets para que se pueda implementar el servidor web.
A continuación se muestra un ejemplo de cómo crear un proceso de servidor web en Erlang.
Por ejemplo
-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]).
Los siguientes puntos deben tenerse en cuenta sobre el programa anterior.
El número de puerto debe ser único y no debe ser utilizado por ningún otro programa. loshttpd service se iniciaría en este puerto no.
los server_root y document_root son parámetros obligatorios.
Salida
A continuación se muestra el resultado del programa anterior.
{ok,<0.42.0>}
Para implementar un Hello world web server en Erlang, realice los siguientes pasos:
Step 1 - Implementar el siguiente código -
-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- Ejecute el código de la siguiente manera. Compile el archivo anterior y luego ejecute los siguientes comandos enerl.
c(helloworld).
Obtendrá el siguiente resultado.
{ok,helloworld}
El siguiente comando es:
inets:start().
Obtendrá el siguiente resultado.
ok
El siguiente comando es:
helloworld:start().
Obtendrá el siguiente resultado.
{ok,<0.50.0>}
Step 3 - Ahora puede acceder a la url - http://localhost:8081/erl/hello_world:service.