1 个不稳定版本

0.1.0 2023年2月24日

#898 in WebAssembly

Apache-2.0

26KB
626

Easegress Rust SDK

这是 Rust SDK,用于 Easegress。它可以用来扩展 Easegress 的功能。

先决条件

以下步骤假设已经安装了 GitRust

本地开发

  1. 克隆仓库。
git clone https://github.com/LokiWager/easegress-demo
  1. src/lib.rs 中实现你的扩展。请查看 examples 目录以获取更多示例。
use std::collections::HashMap;
use std::time::Duration;
use easegress_sdk::*;
use easegress_macros::easegress_object;

// define your own struct.
#[easegress_object]
struct AddRequestHeader;

// implement Program trait for your own struct.
#[easegress_object]
impl Program for AddRequestHeader {
    fn new(_params: HashMap<String, String>) -> Self {
        Self {}
    }

    fn run(&self) -> i32 {
        let v = request::get_header("Foo".to_string());
        if v.len() > 10 {
            log(LogLevel::Warning, format!("The length of Foo is greater than 10"));
        }

        if v.len() > 0 {
            request::add_header("Wasm-Added".to_string(), v.clone());
        }

        request::set_body("I have a new body now".as_bytes().to_vec());
        0
    }
}

注意

  • 您需要在您自己的结构体上实现 Program 特性。
  • 此外,必须将 #[easegress_object] 属性宏应用于您的结构体定义及其特性实现块。
  • 仅允许有一个带有 #[easegress_object] 属性宏的结构体。
  1. 添加 wasm32-unknown-unknown 目标。
rustup target add wasm32-unknown-unknown 
  1. 使用此命令构建
cargo build --target wasm32-unknown-unknown --release

如果成功,它将在 target/wasm32-unknown-unknown/release 文件夹中生成 easegress_demo.wasm

部署和执行

有关部署和执行编译后的 Wasm 代码的详细信息,请参阅 WasmHost 的文档

依赖项

~89–265KB