examples/hello/main.go
package main
import (
"errors"
"fmt"
"time"
"github.com/aisk/vox"
)
func main() {
app := vox.New()
// custom middleware that add a x-response-time to the response header
app.Use(func(ctx *vox.Context, req *vox.Request, res *vox.Response) {
start := time.Now()
ctx.Next()
duration := time.Now().Sub(start)
res.Header.Set("X-Response-Time", fmt.Sprintf("%s", duration))
})
// router param
app.Get("/hello/{name}", func(ctx *vox.Context, req *vox.Request, res *vox.Response) {
res.Body = "Hello, " + req.Params["name"] + "!"
})
// response
app.Get("/", func(ctx *vox.Context, req *vox.Request, res *vox.Response) {
// get the query string
name := req.URL.Query().Get("name")
if name == "" {
name = "World"
}
res.Body = `
<!doctype html>
<head>
<title>xxx</title>
</head>
<body>
<p>Hello, ` + name + `!</p>
</body>
</html>
`
})
// error as body
app.Get("/error", func(ctx *vox.Context, req *vox.Request, res *vox.Response) {
res.Body = errors.New("Error!")
})
app.Run("[::]:3000")
}