3个不稳定版本
0.2.0 | 2022年12月22日 |
---|---|
0.1.1 | 2021年11月8日 |
0.1.0 | 2021年7月22日 |
#424 in HTTP客户端
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文件
lib.rs
: 此文件包含用于获取HTTP请求并将请求作为输入传递给正在开发的函数的辅助代码。此外,此文件还包含与HTTP响应处理相关的代码。仅在需要可变引用请求或需要更改HTTP响应类型时修改此文件。有关详细信息,请参阅HttpRequest
和HttpResponse
。
#[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());
}
};
}
serverless_function.rs
: 此文件包含创建无服务器函数的代码。
pub fn serverless(req: HttpRequest) -> HttpResponse {
return HttpResponse::from("Success from EDJX".to_string())
}
HttpRequest
是只读的,即它只有读取输入HTTP请求的方法。
两个API HttpRequest
和 HttpResponse
都与 标准RUST HTTP接口
相似。其他重要的HTTP结构,如Headers、Method、StatusCode和Version,也与 标准RUST HTTP接口
相似。
这个crate中的另外两个重要结构是 HttpFetch
和 FetchResponse
。 HttpFetch
用于执行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