Learn WASMCLOUD with Real Code Examples
Updated Nov 25, 2025
Code Sample Descriptions
1
Simple wasmCloud Actor (Rust)
# wasmcloud/demo/src/lib.rs
use wasmcloud_actor_core::prelude::*;
use wasmcloud_actor_http_server::prelude::*;
#[actor::init]
pub fn init() {}
#[actor::handler]
pub fn handle(req: Request) -> HandlerResult<Response> {
Ok(Response::ok().body("Hello, wasmCloud!"))
}
A basic wasmCloud actor written in Rust that responds with 'Hello, wasmCloud!' when invoked.
2
wasmCloud Actor Returning JSON
# wasmcloud/demo/json.rs
use wasmcloud_actor_core::prelude::*;
use wasmcloud_actor_http_server::prelude::*;
use serde_json::json;
#[actor::init]
pub fn init() {}
#[actor::handler]
pub fn handle(_req: Request) -> HandlerResult<Response> {
let body = json!({"message": "Hello JSON!"}).to_string();
Ok(Response::ok().body(&body).with_header("Content-Type", "application/json"))
}
Responds with JSON data from a wasmCloud actor.
3
wasmCloud Actor Reading Query Params
# wasmcloud/demo/query.rs
use wasmcloud_actor_core::prelude::*;
use wasmcloud_actor_http_server::prelude::*;
#[actor::init]
pub fn init() {}
#[actor::handler]
pub fn handle(req: Request) -> HandlerResult<Response> {
let query = req.query_params.get("name").unwrap_or(&"Guest".to_string());
Ok(Response::ok().body(format!("Hello, {}!", query)))
}
Reads query parameters from the request.
4
wasmCloud Actor Handling POST
# wasmcloud/demo/post.rs
use wasmcloud_actor_core::prelude::*;
use wasmcloud_actor_http_server::prelude::*;
#[actor::init]
pub fn init() {}
#[actor::handler]
pub fn handle(req: Request) -> HandlerResult<Response> {
if req.method == "POST" {
Ok(Response::ok().body(req.body))
} else {
Ok(Response::ok().status(405).body("Method Not Allowed"))
}
}
Handles POST requests and echoes JSON body.
5
wasmCloud Actor with Custom Header
# wasmcloud/demo/header.rs
use wasmcloud_actor_core::prelude::*;
use wasmcloud_actor_http_server::prelude::*;
#[actor::init]
pub fn init() {}
#[actor::handler]
pub fn handle(_req: Request) -> HandlerResult<Response> {
Ok(Response::ok().body("Custom Header Added").with_header("X-Custom", "wasmCloud"))
}
Adds a custom header to the response.
6
wasmCloud Actor Redirect
# wasmcloud/demo/redirect.rs
use wasmcloud_actor_core::prelude::*;
use wasmcloud_actor_http_server::prelude::*;
#[actor::init]
pub fn init() {}
#[actor::handler]
pub fn handle(_req: Request) -> HandlerResult<Response> {
Ok(Response::ok().status(302).with_header("Location", "https://example.com"))
}
Redirects request to another URL.
7
wasmCloud Actor Calling External API
# wasmcloud/demo/fetch.rs
use wasmcloud_actor_core::prelude::*;
use wasmcloud_actor_http_server::prelude::*;
use reqwest;
#[actor::init]
pub fn init() {}
#[actor::handler]
pub fn handle(_req: Request) -> HandlerResult<Response> {
let res = reqwest::blocking::get("https://api.github.com")?.text()?;
Ok(Response::ok().body(res))
}
Fetches data from an external API and returns it.
8
wasmCloud Actor Conditional Response
# wasmcloud/demo/conditional.rs
use wasmcloud_actor_core::prelude::*;
use wasmcloud_actor_http_server::prelude::*;
#[actor::init]
pub fn init() {}
#[actor::handler]
pub fn handle(req: Request) -> HandlerResult<Response> {
if req.query_params.get("action") == Some(&"ping".to_string()) {
Ok(Response::ok().body("pong"))
} else {
Ok(Response::ok().body("unknown action"))
}
}
Responds differently based on query parameter.
9
wasmCloud Actor Using Environment Variable
# wasmcloud/demo/env.rs
use wasmcloud_actor_core::prelude::*;
use wasmcloud_actor_http_server::prelude::*;
#[actor::init]
pub fn init() {}
#[actor::handler]
pub fn handle(_req: Request) -> HandlerResult<Response> {
let key = std::env::var("MY_API_KEY").unwrap_or("NotSet".to_string());
Ok(Response::ok().body(format!("API Key length: {}", key.len())))
}
Uses an environment variable to customize response.
10
wasmCloud Actor Returning HTML
# wasmcloud/demo/html.rs
use wasmcloud_actor_core::prelude::*;
use wasmcloud_actor_http_server::prelude::*;
#[actor::init]
pub fn init() {}
#[actor::handler]
pub fn handle(_req: Request) -> HandlerResult<Response> {
let html = "<!DOCTYPE html><html><body><h1>Hello, wasmCloud!</h1></body></html>";
Ok(Response::ok().body(html).with_header("Content-Type", "text/html"))
}
Returns a simple HTML page from an actor.