Goji is a HTTP request multiplexer, similar to net/http.ServeMux
.
It compares incoming requests to a list of registered Patterns, and
dispatches to the Handler that corresponds to the first matching
Pattern. Goji also supports Middleware (composable shared
functionality applied to every request) and uses the de facto standard
x/net/context
to store request-scoped values.
package main
import (
"fmt"
"net/http"
"goji.io"
"goji.io/pat"
"golang.org/x/net/context"
)
func hello(ctx context.Context, w http.ResponseWriter, r *http.Request) {
name := pat.Param(ctx, "name")
fmt.Fprintf(w, "Hello, %s!", name)
}
func main() {
mux := goji.NewMux()
mux.HandleFuncC(pat.Get("/hello/:name"), hello)
http.ListenAndServe("localhost:8000", mux)
}
Please refer to Goji's GoDoc Documentation for a full API reference.
Goji's API is stable, and guarantees to never break compatibility with existing code (under similar rules to the Go project's guidelines). Goji is suitable for use in production.
Goji maintains a mailing list, gojiberries, where you should feel welcome to ask questions about the project (no matter how simple!), to announce projects or libraries built on top of Goji, or to talk about Goji more generally. Goji's author (Carl Jackson) also loves to hear from users directly at his personal email address, which is available on his GitHub profile page.
Contributions to Goji are welcome, however please be advised that due to Goji's stability guarantees interface changes are unlikely to be accepted.
All interactions in the Goji community will be held to the high standard of the broader Go community's Code of Conduct.