bf51655a7b
Signed-off-by: Jacek J. Łakis <jacek.lakis@intel.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
47 lines
1.2 KiB
Go
47 lines
1.2 KiB
Go
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")))
|
|
}
|