pip compatible server to serve Python packages out of GitHub
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Carl Jackson 4ed96805c3 Fix old documentation 12 years ago
bind Socket bind helper package 12 years ago
graceful Reference graceful shutdown golang issue 12 years ago
param Parameter parsing 12 years ago
web Fix old documentation 12 years ago
README.md TODOs 12 years ago
default.go New and improved toplevel package 12 years ago
goji.go New and improved toplevel package 12 years ago

README.md

Goji

Goji is a minimalistic web framework inspired by Sinatra. Godoc.

Example

package main

import (
        "fmt"
        "net/http"

        "github.com/zenazn/goji"
        "github.com/zenazn/goji/web"
)

func hello(c web.C, w http.ResponseWriter, r *http.Request) {
        fmt.Fprintf(w, "Hello, %s!", c.UrlParams["name"])
}

func main() {
        goji.Get("/hello/:name", hello)
        goji.Serve()
}

Features

  • Compatible with net/http
  • URL patterns (both Sinatra style /foo/:bar patterns and regular expressions)
  • Reconfigurable middleware stack
  • Context/environment objects threaded through middleware and handlers
  • Automatic support for Einhorn, systemd, and more
  • Graceful shutdown, and zero-downtime graceful reload when combined with Einhorn.
  • Ruby on Rails / jQuery style parameter parsing

Todo

Goji probably deserves a bit more love before anyone actually tries to use it. Things that need doing include:

  • Support for omitting trailing slashes on routes which include them.
  • Tests for goji/web. There are currently no tests. This probably means goji/web is made of bugs. I'm sorry.
  • Standard middleware implementations. I'm currently thinking:
    • Request ID assigner: injects a request ID into the environment.
    • Request logger: logs requests as they come in. Preferrably with request IDs and maybe even with colors.
    • Request timer: maybe part of the request logger. Time how long each request takes and print it. Maybe with color.
    • Error handler: recovers from panics, does something nice with the output.
    • Healthcheck endpoint: Always returns OK.