Client에서 요청하는 Static(Public, Assets..) 파일을 Router 해주는 Gin의 main.go 코드와 HTTP2.0 설정 방법(RunTLS)
main.go
func main() {
router := gin.Default()
router.SetFuncMap(template.FuncMap{})
LoadHTMLFromEmbedFS(router, templatesFS, "web/public/*") // 아직 모르겠음...
/*
- "/" 요청이 오면 /web/public/index.html 을 반환한다.
- nil: zero data로 null와 같은 느낌? 아직 모르겠음
*/
router.GET("/", func(context *gin.Context) {
context.HTML(http.StatusOK, "index.html", nil)
})
/*
- vue build시 public/index.html에 박히는 코드가
/js/... 이므로 아래와 같이 router 설정
- router.Get("[...]" ... 와 같이 사용하고 싶으나 아직 방법을 모르겠음.
- gin에서 제공하는 Group이 있으나 아래와 같은 url 요청은 대응할 수 없을 듯 함
*/
router.GET("/js/*filepath", func(context *gin.Context) {
context.FileFromFS(path.Join("/web/public", context.Request.URL.Path), http.FS(staticFS))
})
router.GET("/css/*filepath", func(context *gin.Context) {
context.FileFromFS(path.Join("/web/public", context.Request.URL.Path), http.FS(staticFS))
})
router.GET("/fonts/*filepath", func(context *gin.Context) {
context.FileFromFS(path.Join("/web/public", context.Request.URL.Path), http.FS(staticFS))
})
// favicon 설정
router.StaticFile("/favicon.ico", "./web/public/favicon.ico")
// Gin에서 제공하는 http2 사용 방법
router.RunTLS(":3000", "./config/localhost-cert.pem", "./config/localhost-private.pem")
}
참고
https://j1mmyson.github.io/posts/usingEmbedWithGin/
https://gin-gonic.com/docs/examples/http2-server-push/