第三方路由器和静态文件

时间:2014-07-20 11:04:34

标签: google-app-engine routing go

我在Google App Engine上使用第三方路由器(httprouter),并希望从root用户提供静态文件。

由于App Engine,我需要将第三方路由器附加到DefaultServeMux上的/

router := httprouter.New()

// Doesn't work, duplicated "/".
http.Handle("/", http.FileServer(http.Dir("public")))

// Needed because of App Engine.
http.Handle("/", router)

问题在于这会重复/模式并出现“多次注册/ ”的恐慌

如何从root用户提供文件,尤其是index.html 并使用第三方路由器?

1 个答案:

答案 0 :(得分:0)

如果您在/处提供静态文件,那么根据https://github.com/julienschmidt/httprouter/issues/7#issuecomment-45725482

,您无法提供任何其他路径
  

您无法在根目录注册“全部捕获”以提供文件,同时还在子路径中注册其他处理程序。   另请参阅https://github.com/julienschmidt/httprouter#named-parameters

上的说明

您应该使用Go在应用程序根目录下提供模板,在子路径上使用静态文件(CSS,JS等):

router := httprouter.New()

router.GET("/", IndexHandler)
// Ripped straight from the httprouter docs
router.ServeFiles("/static/*filepath", http.Dir("/srv/www/public/"))

http.Handle("/", router)