2 个版本
0.0.2 | 2021年4月5日 |
---|---|
0.0.1 | 2021年4月3日 |
#25 in #rhai
24KB
371 行
tide-rhai
tide 的脚本引擎。
概述
此组件提供在 tide 中运行 rhai 脚本 以处理 HTTP 请求的能力。目前它只支持修改消息,但正在考虑添加更多功能,例如 HTTP 客户端。
安装
$ cargo add tide-rhai
示例
创建一个指向包含 rhai 脚本的目录的 tide 服务器。
use tide_rhai::RhaiDir;
#[async_std::main]
async fn main() -> Result<(), std::io::Error> {
tide::log::start();
let mut app = tide::new();
app.at("/*")
.get(RhaiDir::new("/*", "./").unwrap());
app.listen("127.0.0.1:8080").await?;
Ok(())
}
new 的第一个参数是前缀,应映射到 at
参数。第二个是包含 rhai 脚本的文件夹
创建一个名为 headers.rhai 的 rhai 脚本,它选择一个标题并以 JSON 消息返回它。注意它不必命名为 .rhai,但 VS Code 支持该文件扩展名。
let obj = #{};
obj.message = "Is this acceptable?" + ctx.headers["accept"];
obj
这里我们使用上下文对象的 headers
属性。如果是 POST 请求,则 ctx
对象还将包含一个 data
属性,其中包含已发送到服务器的 JSON。
当你现在运行到 https://127.0.0.1:8080/headers.rhai 时,你应该看到以下内容
{"message":"Is this acceptable?text/html,application/xhtml+xml,application/xml;q=0.9,
image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"}
此示例也可以通过克隆此存储库并运行来运行
$ cargo run --example samples
然后浏览到
https://127.0.0.1:8080/helloworld.rhai https://127.0.0.1:8080/headers.rhai https://127.0.0.1:8080/fetch.rhai
待办事项列表
- 日志记录 - 集成 tide 日志系统
- HTTP 客户端 - 类似于 fetch 的 API
- 基准测试 - 管理回归的脚本集合
- 可观察性 - 支持 BPF/DTrace 探针。也许火焰图或状态图
- 模块系统 - Rhai 支持模块,但没有模块系统。
依赖关系
~12–24MB
~377K SLoC