Skip to content
This repository was archived by the owner on Aug 26, 2024. It is now read-only.

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

crates.io  TinyGo Version

wasmCloud HTTP Server Interface

This is the interface for an HTTP Server capability with the contract ID wasmcloud:httpserver

This folder contains

  • Model definition for wasmcloud:httpserver
  • Generated documentation (in HTML)
  • Generated Rust library (in Rust)

Any Rust actor or capability provider using wasmcloud:httpserver should rely upon this library. A capability provider implements the trait HttpServerReceiver.

Capability Provider Implementations

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.

Example Usage

🦀 Rust

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()
        })
    }
}

🐭Golang

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
}