workers icon indicating copy to clipboard operation
workers copied to clipboard

Go package to run an HTTP server on Cloudflare Workers.

workers Go Reference

  • workers is a package to run an HTTP server written in Go on Cloudflare Workers.
  • This package can easily serve http.Handler on Cloudflare Workers.
  • Caution: This is an experimental project.

Features

  • [x] serve http.Handler
  • [ ] R2
    • [x] Head
    • [x] Get
    • [x] Put
    • [x] Delete
    • [x] List
    • [ ] Options for R2 methods
  • [ ] KV
    • [x] Get
    • [x] List
    • [x] Put
    • [x] Delete
    • [ ] Options for KV methods
  • [ ] Cache API
  • [ ] Durable Objects
  • [x] Environment variables

Installation

go get github.com/syumai/workers

Usage

implement your http.Handler and give it to workers.Serve().

func main() {
	var handler http.HandlerFunc = func (w http.ResponseWriter, req *http.Request) { ... }
	workers.Serve(handler)
}

or just call http.Handle and http.HandleFunc, then invoke workers.Serve() with nil.

func main() {
	http.HandleFunc("/hello", func (w http.ResponseWriter, req *http.Request) { ... })
	workers.Serve(nil) // if nil is given, http.DefaultServeMux is used.
}

For concrete examples, see examples directory. Currently, all examples use tinygo instead of Go due to binary size issues.

A template repository is also available.

  • https://github.com/syumai/worker-template-tinygo

FAQ

How do I deploy a worker implemented in this package?

To deploy a Worker, the following steps are required.

  • Create a worker project using wrangler.
  • Build a Wasm binary.
  • Upload a Wasm binary with a JavaScript code to load and instantiate Wasm (for entry point).

The worker-template-tinygo repository contains all the required files, so I recommend using this template.

License

MIT

Author

syumai