#actor #wasmcloud #http-request #api-bindings

wasmcloud-actor-http-client

适用于 wasmCloud Actors 的 HTTP 客户端 Actor 接口

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


用于 wasmcloud-httpclient

Apache-2.0

11KB
109

crates.io  Rust license  documentation

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