1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- package main
- import (
- "fmt"
- "net/http"
- "path"
- "github.com/emicklei/go-restful"
- )
- // This example shows how to define methods that serve static files
- // It uses the standard http.ServeFile method
- //
- // GET http://localhost:8080/static/test.xml
- // GET http://localhost:8080/static/
- //
- // GET http://localhost:8080/static?resource=subdir/test.xml
- var rootdir = "/tmp"
- func main() {
- restful.DefaultContainer.Router(restful.CurlyRouter{})
- ws := new(restful.WebService)
- ws.Route(ws.GET("/static/{subpath:*}").To(staticFromPathParam))
- ws.Route(ws.GET("/static").To(staticFromQueryParam))
- restful.Add(ws)
- println("[go-restful] serving files on http://localhost:8080/static from local /tmp")
- http.ListenAndServe(":8080", nil)
- }
- func staticFromPathParam(req *restful.Request, resp *restful.Response) {
- actual := path.Join(rootdir, req.PathParameter("subpath"))
- fmt.Printf("serving %s ... (from %s)\n", actual, req.PathParameter("subpath"))
- http.ServeFile(
- resp.ResponseWriter,
- req.Request,
- actual)
- }
- func staticFromQueryParam(req *restful.Request, resp *restful.Response) {
- http.ServeFile(
- resp.ResponseWriter,
- req.Request,
- path.Join(rootdir, req.QueryParameter("resource")))
- }
|