Gin(2). Static Files 설정, HTTP2.0

PRITRAS·2023년 10월 27일
0

GO

목록 보기
2/2
post-thumbnail

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/

profile
세상에 착한 개는 없다

0개의 댓글