Crates.io | wasmcloud-interface-httpserver |
lib.rs | wasmcloud-interface-httpserver |
version | 0.12.0 |
source | src |
created_at | 2021-07-23 03:59:37.546582 |
updated_at | 2023-09-19 21:40:56.314851 |
description | interface for actors to receive http requests (wasmcloud:httpserver) |
homepage | https://github.com/wasmcloud/wasmcloud |
repository | https://github.com/wasmcloud/interfaces |
max_upload_size | |
id | 426115 |
size | 26,830 |
This is the interface for an HTTP Server capability with the contract ID wasmcloud:httpserver
This folder contains
wasmcloud:httpserver
Any Rust actor or capability provider using wasmcloud:httpserver
should rely upon this library. A capability provider implements the trait HttpServerReceiver
.
The following is a list of implementations of the wasmcloud:httpserver
contract. Feel free to submit a PR adding your implementation if you have a community/open source version.
Name | Vendor | Description |
---|---|---|
HTTPServer | wasmCloud | wasmCloud HTTP Server implementation using the highly scalable warp web server. |
Implementing the HttpServer.HandleRequest
operation
use wasmbus_rpc::actor::prelude::*;
use wasmcloud_interface_httpserver::{HttpRequest, HttpResponse, HttpServer, HttpServerReceiver};
#[derive(Debug, Default, Actor, HealthResponder)]
#[services(Actor, HttpServer)]
struct HelloActor {}
#[async_trait]
impl HttpServer for HelloActor {
async fn handle_request(&self, _ctx: &Context, _req: &HttpRequest) -> RpcResult<HttpResponse> {
Ok(HttpResponse {
body: "Hello World".as_bytes().to_owned(),
..Default::default()
})
}
}
Implementing the HttpServer.HandleRequest
operation
import (
"github.com/wasmcloud/actor-tinygo"
httpserver "github.com/wasmcloud/interfaces/httpserver/tinygo"
)
func main() {
me := Actor{}
actor.RegisterHandlers(httpserver.HttpServerHandler(&me))
}
type Actor struct {}
func (e *Actor) HandleRequest(ctx *actor.Context, req httpserver.HttpRequest) (*httpserver.HttpResponse, error) {
r := httpserver.HttpResponse{
StatusCode: 200,
Header: make(httpserver.HeaderMap, 0),
Body: []byte("hello world"),
}
return &r, nil
}