3个不稳定版本

0.2.0 2022年12月22日
0.1.1 2021年11月8日
0.1.0 2021年7月22日

#424 in HTTP客户端

MIT 许可证

96KB
2K SLoC

rust-client-edjLibrary-stubs

构建Rust客户端edjLibrary存根

cargo build --release
lib file is created in targe/release directory.

##构建Rust中的无服务器函数。请访问示例目录/app

cargo build --release --target wasm32-unknown-unknown

WASM file is created in target/release directory.

lib.rs:

EDJX库SDK for Rust

此crate包含EDJX SDK库用于Rust。此SDK用于开发EDJX无服务器函数。在此版本中,函数仅通过HTTP触发。

此外,在构建无服务器函数时,开发者可以使用流式传输功能。流式传输优化了数据传输(上传文件/下载文件)到EDJX对象存储和HTTP传输。使用流式传输功能,开发者可以处理大数据集,而无需为函数分配大量内存。由于函数以较小的数据块处理数据,因此函数中使用流式传输可以大大减少响应时间。

EDJX HTTP触发函数

这些函数由标准HTTP方法触发。函数的输入是一个HTTP请求对象(在EDJX SDK中以HttpRequest表示)和返回值必须是一个HTTP响应对象(在EDJX SDK中以HttpResponse表示)。

EDJX示例Rust无服务器应用程序包含两个Rust文件

  1. lib.rs : 此文件包含用于获取HTTP请求并将请求作为输入传递给正在开发的函数的辅助代码。此外,此文件还包含与HTTP响应处理相关的代码。仅在需要可变引用请求或需要更改HTTP响应类型时修改此文件。有关详细信息,请参阅HttpRequestHttpResponse
#[no_mangle]
pub fn init() {
    let req = match HttpRequest::from_client() {
        Ok(val) => val,
        Err(e) => {
            error!("{}", e.to_string().as_str());
            HttpResponse::new()
                .set_status(StatusCode::BAD_REQUEST)
               .send()
               .unwrap();
           return;
       }
   };

  let res = crate::serverless_function::serverless(req);
    match res.send() {
        Ok(x) => x,
        Err(e) => {
            error!("{}", e.to_string().as_str());
        }
    };
}
  1. serverless_function.rs : 此文件包含创建无服务器函数的代码。
pub fn serverless(req: HttpRequest) -> HttpResponse {
    return HttpResponse::from("Success from EDJX".to_string())
}

HttpRequest是只读的,即它只有读取输入HTTP请求的方法。

两个API HttpRequestHttpResponse 都与 标准RUST HTTP接口 相似。其他重要的HTTP结构,如Headers、Method、StatusCode和Version,也与 标准RUST HTTP接口 相似。

这个crate中的另外两个重要结构是 HttpFetchFetchResponseHttpFetch 用于执行HTTP请求。 FetchResponse 作为Fetch请求的响应返回。这两个类型的API与 标准RUST HTTP接口 相似。

HTTP正文大小限制

目前,所有HTTP API的HTTP正文大小限制为512 MB。

与EDJX对象存储和KV存储交互

EDJX库SDK中最重要的API是用以与对象存储(由EDJX SDK中的 storage 表示)和KV存储(由EDJX SDK中的 [kv] 表示)交互的API。

对象存储是一个由EDJX P2P网络支持的分布式数据存储。此SDK使用GET和PUT方法处理文件内容和相关属性。

KV存储是一个由EDJX P2P网络支持的分布式键值数据存储。键的大小限制为512字节,值的大小限制为512 KB。

日志记录

此SDK提供了与标准RUST日志类似的通用RUST兼容的日志记录器API。

依赖关系

~2.7–4MB
~102K SLoC