#actor #wasmcloud #capability #api-bindings

wasmcloud-interface-httpserver

actors接收HTTP请求的接口(wasmcloud:httpserver)

25个版本 (11个重大更新)

0.12.0 2023年9月19日
0.11.0 2023年7月20日
0.10.0 2023年4月12日
0.9.0 2022年12月20日
0.1.0 2021年7月23日

#534 in WebAssembly

Apache-2.0 和可能 LGPL-3.0-or-later

27KB
570

crates.io  TinyGo版本

WasmCloud HTTP服务器接口

这是具有合约ID wasmcloud:httpserver 的HTTP服务器功能的接口

此文件夹包含

  • wasmcloud:httpserver 的模型定义
  • 生成的文档(HTML格式)
  • 生成的Rust库(Rust格式)

任何使用 wasmcloud:httpserver 的Rust actor或能力提供者都应该依赖于这个库。能力提供者实现 HttpServerReceiver 特性。

能力提供者实现

以下是 wasmcloud:httpserver 合同的实现列表。如果您有社区/开源版本,请随时提交PR添加您的实现。

名称 供应商 描述
HTTPServer wasmCloud 使用高度可扩展的 warp 网络服务器实现的wasmCloud HTTP服务器。

示例用法

🦀 Rust

实现 HttpServer.HandleRequest 操作

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

实现 HttpServer.HandleRequest 操作

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
}

依赖关系

~12–30MB
~492K SLoC