如何 5 分钟用 elli 搭建你的第一个 Erlang HTTP 服务器:新手快速开始完整教程

发布时间:2026/8/17 18:06:15

如何 5 分钟用 elli 搭建你的第一个 Erlang HTTP 服务器:新手快速开始完整教程
如何 5 分钟用 elli 搭建你的第一个 Erlang HTTP 服务器新手快速开始完整教程【免费下载链接】elliSimple, robust and performant Erlang web server项目地址: https://gitcode.com/gh_mirrors/ell/elli想要用 Erlang 搭建一个HTTP 服务器很多新手第一反应是去啃 Cowboy 或 MochiWeb 的源码结果还没开始就劝退了。其实 Erlang 生态里有一个极其简单、健壮又高性能的轻量级 HTTP 服务器——elli。它专为 HTTP API 设计核心思想只有一个你只需要写一个回调模块剩下的连接管理、请求解析、并发处理全部交给它。本文将带你 5 分钟快速上手从零开始搭建并运行你的第一个 Erlang HTTP 服务器非常适合刚接触 Erlang Web 开发的新手。什么是 elli为什么新手首选它⚡elli 是一个简单、健壮且高性能的 Erlang Web 服务器官方定位是用于 HTTP API 的 Erlang 服务器。它最大的特点就是极简回调式设计你只需实现handle/2和handle_event/3两个函数就能处理所有请求。性能出色默认 20 个 acceptor 并发接受连接配合 Erlang 的进程模型轻松支撑高并发 API。依赖极少rebar.config 里deps为空几乎没有第三方依赖编译快、部署简单。功能够用支持 GET/POST 参数解析、自定义响应头、chunked 流式响应、sendfile 静态文件、SSL 加密、中间件扩展等。对比 Cowboy 这类功能全面的框架elli 更像一把手术刀——没有多余的东西砍掉一切你不需要的让你专注业务本身。快速开始前的环境准备 在动手之前请确认你的机器上已安装Erlang/OTP建议 20.0 以上版本终端执行erl能进入 Erlang shell 即可。make和gcc用于编译 Erlang 代码。git用于拉取项目源码。如果你还没有 Erlang可以通过系统包管理器或官方源码包安装整个过程约 2 分钟。安装完成后erl -version能看到版本号就说明环境就绪了。一键安装克隆并编译 elli 源码 环境就绪后我们开始安装。先把项目克隆到本地并编译git clone https://gitcode.com/gh_mirrors/ell/elli cd elli make compilemake compile实际上执行的是./rebar compile仓库自带了rebar可执行文件所以无需额外安装构建工具。编译成功后ebin/目录下会生成所有.beam文件这就意味着你的Erlang HTTP 服务器核心已经就绪了。想要验证代码质量还可以运行自带测试make eunit测试用例覆盖了elli_example_callback、HTTP 解析、中间件、SSL 等多个模块见test/目录全部通过说明安装没有任何问题。最快配置方法启动你的第一个 HTTP 服务器 编译完成后最快启动服务器的方式是利用 elli 自带的示例回调模块。在项目根目录启动 Erlang shellerl -pa ebin然后在 Erlang shell 中输入elli:start_link().就这么简单默认情况下elli:start_link/0会读取include/elli.hrl中定义的默认配置监听8080 端口回调模块为elli_example_callback。现在打开浏览器访问http://localhost:8080/hello/world→ 返回Hello World!http://localhost:8080/hello?nameElli→ 返回Hello Elli你的第一个 Erlang HTTP 服务器已经跑起来了 从安装到启动整个过程不超过 5 分钟。如果你需要自定义端口只需传入配置列表elli:start_link([{callback, elli_example_callback}, {callback_args, []}, {port, 9000}]).elli:start_link/1的核心入口定义在src/elli.erl它会创建监听 socket、启动 acceptor 进程池并在启动时回调你的handle_event(elli_startup, ...)方便你初始化 ETS 表或辅助进程。编写你的第一个 HTTP 回调模块 ✍️默认的elli_example_callback只是示例生产环境你需要写自己的回调。ellie 的约定非常清晰实现elli_handler行为提供handle/2和handle_event/3两个函数。新建一个my_callback.erl文件-module(my_callback). -behaviour(elli_handler). -export([handle/2, handle_event/3]). -include(include/elli.hrl). handle(Req, _Args) - handle(elli_request:method(Req), elli_request:path(Req), Req). handle(GET, [ping], _Req) - {ok, [], pong}; handle(GET, [hello, Name], _Req) - {ok, [{Content-Type, text/plain}], Hello , Name/binary}; handle(_, _, _Req) - {404, [], Not Found}. handle_event(_Event, _Args, _Config) - ok.然后编译并启动c(my_callback). elli:start_link([{callback, my_callback}, {callback_args, []}, {port, 8080}]).访问http://localhost:8080/ping即可得到pong。这个最小示例展示了 elli 的核心模式elli_request:path/1会把 URL 路径按/切分成二进制列表方便你写路由匹配子句。响应格式为{状态码或ok, 响应头列表, 响应体}响应体可以是 binary 或 iolist。常用接口开发技巧参数、请求头与响应 新手开发 API 时最常用到的能力elli 的elli_request模块几乎都提供了获取 URL 查询参数Name elli_request:get_arg(name, Req, undefined), %% 需要 URL 解码时用 get_arg_decoded/3获取 POST 表单参数Name elli_request:post_arg(name, Req, undefined), City elli_request:post_arg_decoded(city, Req, undefined),读取请求头Accept elli_request:get_header(Accept, Req, text/plain),返回自定义响应头与状态码{201, [{X-Custom, foobar}], created}, {304, [{Etag, abc}], }具体实现都可以在src/elli_request.erl中找到每个函数的用途一目了然。需要提醒的是返回{304, ...}时 elli 会自动忽略响应体非常适合做缓存协商。进阶玩法中间件、gzip 压缩与流式响应 当你的 API 需要鉴权、日志、压缩等横切能力时elli 提供了优雅的中间件机制。中间件链通过elli_middleware组合多个处理模块比如官方示例中把压缩中间件和业务回调串起来Config [{mods, [ {elli_middleware_compress, []}, {my_callback, []} ]}], elli:start_link([{callback, elli_middleware}, {callback_args, Config}, {port, 8080}]).配置好elli_middleware_compress后超过 1024 字节的响应体会被自动 gzip 压缩大幅降低带宽消耗而你的业务代码完全无感知。chunked 流式响应如果要做实时推送如 SSEelli 支持分块发送。核心用法是拿到chunk_ref后异步发送数据Ref elli_request:chunk_ref(Req), spawn(fun() - elli_request:send_chunk(Ref, [chunk1]), elli_request:send_chunk(Ref, [chunk2]), elli_request:close_chunk(Ref) end), {chunk, [{Content-Type, text/event-stream}]}静态文件与 Range 支持返回{file, /path/to/file}即可让 elli 用 sendfile 发送文件配合elli_util:normalize_range/2还能直接支持 HTTP Range 断点续传这在提供下载服务时非常实用。单元测试你的回调逻辑 ✅elli 内置了测试辅助模块elli_test可以不启动服务器直接调用你的回调极大方便了单元测试elli_test:call(GET, /ping, [], , [{callback, my_callback}, {callback_args, []}]).返回的#req{}记录中包含了回调的返回值配合 EUnit 断言即可完成测试。项目自带的test/elli_tests.erl等测试文件都是很好的参考范例。写在最后 通过本文你应该已经掌握用 5 分钟克隆编译 elli、通过默认配置快速启动、编写自己的回调模块、解析参数与请求头、使用中间件和流式响应以及编写单元测试。elli 的代码量很小src/目录下只有十几个.erl文件当你遇到问题或想深入原理时直接阅读源码就是最好的文档。还等什么马上动手搭建属于你的第一个 Erlang HTTP 服务器吧【免费下载链接】elliSimple, robust and performant Erlang web server项目地址: https://gitcode.com/gh_mirrors/ell/elli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

2019款大众宝来深度解析:MQB平台升级与动力配置如何重塑国民家轿

2019款大众宝来深度解析:MQB平台升级与动力配置如何重塑国民家轿

2026/8/17 18:06:15

1. 从“驾驶者之车”到“国民家轿”的转身2019年,当一汽-大众宣布新款宝来以11.28万元至15.98万元的价格区间正式上市时,市场并没有感到太多意外,但从业内视角看,这背后是一次非常典型的“精准卡位”操作。宝来这个名字&#xff0…

3小时跑通DVWA-Chinese漏洞靶场:从环境搭建到拿下SQL注入

3小时跑通DVWA-Chinese漏洞靶场:从环境搭建到拿下SQL注入

2026/8/17 17:56:14

3小时跑通DVWA-Chinese漏洞靶场:从环境搭建到拿下SQL注入 【免费下载链接】DVWA-Chinese DVWA全汉化版本 项目地址: https://gitcode.com/gh_mirrors/dv/DVWA-Chinese 第一次搭Web安全漏洞靶场,我盯着满屏英文安装报错到凌晨两点。数据库连不上、…

LFM2.5-1.2B-Thinking-4bit是什么?1.2B参数本地大模型的终极入门指南

LFM2.5-1.2B-Thinking-4bit是什么?1.2B参数本地大模型的终极入门指南

2026/8/17 17:56:14

LFM2.5-1.2B-Thinking-4bit是什么?1.2B参数本地大模型的终极入门指南 【免费下载链接】LFM2.5-1.2B-Thinking-4bit 项目地址: https://ai.gitcode.com/hf_mirrors/mlx-community/LFM2.5-1.2B-Thinking-4bit LFM2.5-1.2B-Thinking-4bit 是一个由 mlx-communi…

免费网盘直链下载实战指南:一个脚本解锁八大网盘,三分钟上手不踩坑

免费网盘直链下载实战指南:一个脚本解锁八大网盘,三分钟上手不踩坑

2026/8/17 19:06:17

免费网盘直链下载实战指南:一个脚本解锁八大网盘,三分钟上手不踩坑 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘…

如何用免费开源的 G-Helper 接管华硕笔记本的所有性能设置

如何用免费开源的 G-Helper 接管华硕笔记本的所有性能设置

2026/8/17 19:06:17

如何用免费开源的 G-Helper 接管华硕笔记本的所有性能设置 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbook, Expertboo…

Xyne工作流构建器教程:无代码编排AI Agent,自动化复杂业务流程

Xyne工作流构建器教程:无代码编排AI Agent,自动化复杂业务流程

2026/8/17 19:06:17

Xyne工作流构建器教程:无代码编排AI Agent,自动化复杂业务流程 【免费下载链接】xyne AI-first Search & Answer Engine for work. Open-source alternative to Glean. 项目地址: https://gitcode.com/gh_mirrors/xy/xyne Xyne是一款AI优先的…

虚拟显示器快速上手指南:用 ParsecVDisplay 为电脑凭空增加 4K 240Hz 屏幕

虚拟显示器快速上手指南:用 ParsecVDisplay 为电脑凭空增加 4K 240Hz 屏幕

2026/8/17 19:06:17

虚拟显示器快速上手指南:用 ParsecVDisplay 为电脑凭空增加 4K 240Hz 屏幕 【免费下载链接】parsec-vdd ✨ Perfect virtual display for game streaming 项目地址: https://gitcode.com/gh_mirrors/pa/parsec-vdd ParsecVDisplay 是一款基于 Parsec 虚拟显示…

无线通信技术选型指南:从Wi-Fi、蓝牙到Zigbee的实战场景剖析

无线通信技术选型指南:从Wi-Fi、蓝牙到Zigbee的实战场景剖析

2026/8/17 19:06:17

1. 从“能用”到“好用”:无线技术选型的底层逻辑最近几年,无论是想给家里添置几件智能设备,还是为一个小型车间做自动化改造,“无线”这个词几乎成了绕不开的选项。但当你打开购物网站,或者咨询方案商时,扑…

华硕笔记本为什么要卸掉奥创:GHelper 轻量控制工具安装配置问答

华硕笔记本为什么要卸掉奥创:GHelper 轻量控制工具安装配置问答

2026/8/17 18:56:17

华硕笔记本为什么要卸掉奥创:GHelper 轻量控制工具安装配置问答 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Ze…

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

2026/8/17 1:28:42

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

【双层规划,节点出清价,绿证交易,CVaR方法】两级电力市场环境下计及风险的省间交易商最优购电模型附Matlab代码

【双层规划,节点出清价,绿证交易,CVaR方法】两级电力市场环境下计及风险的省间交易商最优购电模型附Matlab代码

2026/8/16 0:04:13

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

隐式mpc+自适应mpc+时变mpc,线性时变模型预测控制附Simulink仿真

隐式mpc+自适应mpc+时变mpc,线性时变模型预测控制附Simulink仿真

2026/8/17 8:40:51

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

LabVIEW异步调用实战:从原理到生产者消费者模式,解决界面卡顿与并行处理难题

LabVIEW异步调用实战:从原理到生产者消费者模式,解决界面卡顿与并行处理难题

2026/8/17 0:05:22

1. 项目概述:为什么异步调用是LabVIEW进阶的必修课? 如果你用LabVIEW做过稍微复杂点的项目,尤其是涉及界面响应、多任务并行或者硬件IO等待的场景,大概率遇到过这样的窘境:前面板点个按钮,整个程序就“卡死…

LabVIEW异步调用实战:解决界面卡顿与并行处理难题

LabVIEW异步调用实战:解决界面卡顿与并行处理难题

2026/8/17 0:05:22

1. 项目概述:为什么异步调用是LabVIEW进阶的必经之路如果你在LabVIEW里写过稍微复杂点的程序,尤其是涉及到界面响应、多任务并行或者硬件IO等待,大概率会遇到一个头疼的问题:程序“卡”住了。前面板点不动,进度条不更新…

飞书局域网文件传输实战:3种方案实现高速点对点传输

飞书局域网文件传输实战:3种方案实现高速点对点传输

2026/8/17 0:05:22

1. 项目概述:为什么要在局域网内用飞书传文件? 飞书作为一款主流的协同办公套件,其核心功能是围绕云端协作设计的。无论是文档、表格还是文件,通常的分享逻辑都是“上传到云端 -> 生成链接 -> 分享给同事”。这个流程在互联…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/17 12:00:53

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/15 10:10:27

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/14 19:35:14

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…