elli
3.1.0
Elli는 Erlang 애플리케이션 내에서 실행하여 HTTP API를 노출할 수 있는 웹 서버입니다. 처리량이 많고 대기 시간이 짧은 HTTP API를 구축하는 것을 목표로 합니다. 범용 기능보다 견고성과 성능이 더 중요하다면 Elli가 적합할 수 있습니다. 웹서버 구현에 대해 자세히 알아보고 계시다면 Elli가 도움이 될 것입니다. 웹 사이트가 아닌 웹 서비스를 구축하고 있다면 Elli가 적합할 수 있습니다.
Elli에는 OTP 22.0 이상이 필요합니다.
rebar.config
에 대한 종속성으로 애플리케이션에 elli
추가합니다.
{ deps , [
{ elli , " 3.3.0 " }
]}.
그런 다음 컴파일하려면 다음을 실행하세요.
rebar3 compile
Erlang 셸 내에서 Elli를 부팅하려면 다음을 실행하세요.
rebar3 shell
% % starting elli
1 > { ok , Pid } = elli : start_link ([{ callback , elli_example_callback }, { port , 3000 }]).
콜백 모듈 작성 방법을 배울 수 있는 가장 좋은 소스는 elli_example_callback
입니다. 테스트에 사용된 여러 가지 예와 모든 이벤트에 대한 설명도 있습니다.
최소 콜백 모듈은 다음과 같습니다:
- module ( elli_minimal_callback ).
- behaviour ( elli_handler ).
- include_lib ( " elli/include/elli.hrl " ).
- export ([ handle / 2 , handle_event / 3 ]).
handle ( Req , _Args ) ->
% % Delegate to our handler function
Method = Req # req . method ,
Path = elli_request : path ( Req ),
handle ( Method , Path , Req ).
handle ( 'GET' = _Method , [<< " hello " >>, << " world " >>] = _Path , _Req ) ->
% % Reply with a normal response. `ok' can be used instead of `200'
% % to signal success.
StatusCode = ok ,
Headers = [],
Body = << " Hello World! " >>,
{ StatusCode , Headers , Body };
handle ( _Method , _Path , _Req ) ->
{ 404 , [], << " Not Found " >>}.
% % @doc Handle request events: request completed, exception
% % thrown, client timeout, etc. Must return `ok'.
handle_event ( _Event , _Data , _Args ) ->
ok .
감독자에 elli
추가하려면 다음 예를 사용하여 필요에 맞게 조정할 수 있습니다.
- module ( elli_minimal_sup ).
- behaviour ( supervisor ).
- export ([ start_link / 0 , init / 1 ]).
start_link () ->
SupName = { local , ? MODULE },
Module = ? MODULE ,
Args = [],
supervisor : start_link ( SupName , Module , Args ).
init ([] = _Args ) ->
ElliOpts = [
{ callback , elli_minimal_callback },
{ port , 3000 }
],
ElliSpec = {
_Id = elli_minimal_http ,
_Start = { elli , start_link , [ ElliOpts ]},
_Restart = permanent ,
_Shutdown = 5000 ,
_Worker = worker ,
_Modules = [ elli ]},
{ ok , {{ _Strategy = one_for_one , _Intensity = 5 , _Period = 10 }, [ ElliSpec ]} }.
Elli의 기능과 디자인 철학에 대한 자세한 내용은 overview
확인하세요.
Elli는 MIT 라이선스에 따라 라이선스가 부여됩니다.