4 个版本
0.2.1 | 2021 年 4 月 16 日 |
---|---|
0.2.0 | 2021 年 3 月 25 日 |
0.1.1 | 2021 年 2 月 17 日 |
0.1.0 | 2021 年 2 月 10 日 |
#1619 in WebAssembly
11KB
109 行
wasmCloud HTTP 客户端 Actor 接口
此 crate 为 wasmCloud actors 提供了一个与 HTTP 客户端能力提供者的接口。使用此接口的 actors 必须拥有 wasmcloud:httpclient
权限,以便有权发起外部 HTTP 请求,并且它们必须有一个配置好的、活动的绑定到 HTTP 客户端能力提供者。
没有此权限和能力绑定的 wasmCloud actors 将无法发起外部 HTTP 请求。
示例
use wapc_guest::HandlerResult;
extern crate wasmcloud_actor_http_server as httpserver;
extern crate wasmcloud_actor_http_client as httpclient;
extern crate wasmcloud_actor_core as actor;
const API_URL: &str = "https://wasmcloudapi.cloud.io/proxy";
#[actor::init]
pub fn init() {
httpserver::Handlers::register_handle_request(get_proxy);
}
/// This function proxys an inbound HTTP request to an external server
fn get_proxy(msg: httpserver::Request) -> HandlerResult<httpserver::Response> {
// Form client request from server request
if msg.method == "GET".to_string() {
// Replace `request` with `httpclient::default().request`
let res = request(msg.method, API_URL.to_string(), msg.header, vec![])?;
// Form server response
Ok(httpserver::Response {
status_code: res.status_code,
status: res.status,
header: res.header,
body: res.body,
})
} else {
Ok(httpserver::Response::internal_server_error("Only GET requests can be proxied with this actor"))
}
}
依赖项
~0.8–1.5MB
~33K SLoC