web.go is the simplest way to write web applications in the Go programming language. It's ideal for writing simple, performant backend web services.
web.go should be familiar to people who've developed websites with higher-level web frameworks like sinatra, pylons, or web.py. It is designed to be a lightweight web framework that doesn't impose any scaffolding on the user. Some features include:
- Routing to url handlers based on regular expressions
- Secure cookies
- Support for fastcgi and scgi
- Web applications are compiled to native code. This means very fast execution and page render speed ( benchmarks coming soon :)
- Serving static files
- Make sure you have the a working Go environment. See the install instructions. web.go targets the 'release' tag. To get the release tag, simply run
hg update -r release
. If you're running an outdated version of Go, or a version near the , it likely won't compile. - Make sure that $GOROOT is set. web.go installs itself as a Go package, so it requires $GOROOT. See Go's install instructions for more information about $GOROOT.
- git clone git://github.com/hoisie/web.go.git
- cd web.go && make install
You can also install using goinstall github.com/hoisie/web.go
, but if you do this, the import statement in your go programs will be import github.com/hoisie/web.go
instead of just import web
.
package main
import (
"web"
)
func hello(val string) string { return "hello " + val }
func main() {
web.Get("/(.*)", hello)
web.Run("0.0.0.0:9999")
}
To run the application, put the code in a file called hello.go and run:
8g hello.go && 8l -o hello hello.8 && ./hello
You can point your browser to http://localhost:9999/world .
For a quickstart guide, check out web.go's home page
There is also a tutorial
If you use web.go, I'd greatly appreciate a quick message about what you're building with it. This will help me get a sense of usage patterns, and helps me focus development effors on features that people will actually use.
web.go was written by Michael Hoisie.
Follow me on Twitter!