Skip to content

rakunlabs/ada

Repository files navigation

ada

License Coverage GitHub Workflow Status Go Report Card Go PKG Web

Simple, flexible go web framework.

go get github.com/rakunlabs/ada

Usage

Check out the guide for more details.

package main

import (
	"net/http"

	"github.com/rakunlabs/ada"
)

func main() {
	server := ada.New()
	server.GET("/hello/{user}", SayHello)

	server.Start(":8080")
}

// /////////////////////

func SayHello(w http.ResponseWriter, r *http.Request) {
	w.Write([]byte("Hello, " + r.PathValue("user")))
}

Runtime Middleware Reload

Replace, disable, or add middlewares at runtime without restarting:

auth := ada.NewSlot(forwardauth.Middleware(
    forwardauth.WithAddress("http://auth:8080/verify"),
))
server.Use(auth.Middleware())

// Hot-swap at runtime
auth.Replace(forwardauth.Middleware(forwardauth.WithAddress("http://auth-v2:8080")))
auth.Disable()  // bypass
auth.Enable()   // restore

// Or manage multiple middlewares by key
stack := ada.NewPipeline()
stack.Set("cors", cors.Middleware(...))
stack.Set("auth", forwardauth.Middleware(...))
server.Use(stack.Middleware())

stack.Set("ratelimit", ratelimit.Middleware(...))  // add at runtime
stack.Remove("auth")                                // remove at runtime

See the Runtime Reload guide for full details.

Contributors

Languages