Skip to content

Latest commit

 

History

History
46 lines (33 loc) · 1.33 KB

README.md

File metadata and controls

46 lines (33 loc) · 1.33 KB

Goober

A micro web framework for go.

Why? / About


Go has an irresistibly fully featured standard library that includes, but is not limited to, http serving. With this kind of functionality baked in to the standard libraries, it is possible to create powerful frameworks in very little code.

Goober is, amongst other things, one of these frameworks. Its only distinguishing factor is the way it handles route matching — through a Trie-like tree structure. This way, the route parser doesn't waste time scanning through a long list of routes that won't match.

Example


An example can be found in examples/main.go, but here is an excerpt of all that is needed to run a simple hello world:

package main

import (
  "github.com/bigs/goober"
  "net/http"
  "io"
  "log"
)

func hello(w http.ResponseWriter, r *goober.Request) {
  io.WriteString(w, "Hello, <i>" + r.URLParams[":name"] + "</i>.")
}

func main() {
  var g = goober.New()
  g.Get("/hello/:name", hello)
  g.ErrorPages[404] = "<h1>Not found.</h1>"

  err := g.http.ListenAndServe(":3000")
  if err != nil {
    log.Fatal("ListenAndServe: ", err)
  }
}

And that's it!

Implementation Details


There are a few implementation details worthy of note. By default, your Content-Type header will be set to text/html.