贵州建设职业学院官方网站,付网站建设费会计分录,装修图片,湖南天辰建设责任公司网站Web应用通常需要提供静态资源#xff0c;如CSS、JavaScript、图片等。Gin框架提供了多种方法来处理静态文件。
1. 静态文件服务方法
Gin提供了以下静态文件服务方法#xff1a;
Static() #xff1a;提供静态文件服务StaticFile()#xff1a;提供单个静态文件服务StaticFS(…Web应用通常需要提供静态资源如CSS、JavaScript、图片等。Gin框架提供了多种方法来处理静态文件。1. 静态文件服务方法Gin提供了以下静态文件服务方法Static()提供静态文件服务StaticFile()提供单个静态文件服务StaticFS() 提供静态文件服务自定义文件系统StaticFileFS()提供单个静态文件服务自定义文件系统2. 静态文件服务Static()方法用于从指定的文件系统根目录提供静态文件服务。源码func(group*RouterGroup)Static(relativePath,rootstring)IRoutes{returngroup.StaticFS(relativePath,Dir(root,false))}relativePath 参数用于指定路由的路径。root 参数用于指定文件系统的根目录。项目示例project目录staticcssindex.cssbody{background-color:#fafafa;font-family:Open Sans,sans-serif;font-size:16px;line-height:1.5;}jsindex.jsfunctiongetDate(){returnnewDate().toISOString().slice(0,10)}main.gofuncmain(){// 创建路由r:gin.Default()// 静态文件服务r.Static(/static,./static)// 启动服务默认端口8080err:r.Run()iferr!nil{return}}测试访问http://127.0.0.1:8080/static/css/index.cssbody{background-color:#fafafa;font-family:Open Sans,sans-serif;font-size:16px;line-height:1.5;}访问http://127.0.0.1:8080/static/js/index.jsfunctiongetDate(){returnnewDate().toISOString().slice(0,10)}3. 单个静态文件服务StaticFile方法用于注册单个路由为指定的单个本地文件提供服务。源码func(group*RouterGroup)StaticFile(relativePath,filepathstring)IRoutes{returngroup.staticFileHandler(relativePath,func(c*Context){c.File(filepath)})}relativePath 参数用于指定路由路径。filepath 参数用于指定单个文件的路径。项目示例project目录staticcssindex.cssbody{background-color:#fafafa;font-family:Open Sans,sans-serif;font-size:16px;line-height:1.5;}jsindex.jsfunctiongetDate(){returnnewDate().toISOString().slice(0,10)}main.gofuncmain(){// 创建路由r:gin.Default()// 单个静态文件服务r.StaticFile(/static/css/index.css,./static/css/index.css)// 单个静态文件服务r.StaticFile(/static/js/index.js,./static/js/index.js)// 启动服务默认端口8080err:r.Run()iferr!nil{return}}测试访问http://127.0.0.1:8080/static/css/index.cssbody{background-color:#fafafa;font-family:Open Sans,sans-serif;font-size:16px;line-height:1.5;}访问http://127.0.0.1:8080/static/js/index.jsfunctiongetDate(){returnnewDate().toISOString().slice(0,10)}4. 自定义文件系统的静态文件服务StaticFS、StaticFileFS方法与前面介绍的两个方法类似但是增加了一个fs http.FileSystem参数用于指定使用的文件系统。gin默认使用gin.Dir()源码// StaticFS 自定义文件系统的静态文件服务func(group*RouterGroup)StaticFS(relativePathstring,fs http.FileSystem)IRoutes{ifstrings.Contains(relativePath,:)||strings.Contains(relativePath,*){panic(URL parameters can not be used when serving a static folder)}handler:group.createStaticHandler(relativePath,fs)urlPattern:path.Join(relativePath,/*filepath)// Register GET and HEAD handlersgroup.GET(urlPattern,handler)group.HEAD(urlPattern,handler)returngroup.returnObj()}// StaticFileFS 自定义文件系统的单个静态文件服务func(group*RouterGroup)StaticFileFS(relativePath,filepathstring,fs http.FileSystem)IRoutes{returngroup.staticFileHandler(relativePath,func(c*Context){c.FileFromFS(filepath,fs)})}对应前面的项目示例使用这两个方法的go代码如下使用StaticFSfuncmain(){// 创建路由r:router.NewHttpRouter()// 指定文件系统的静态文件服务r.StaticFS(/static,http.Dir(./font/static))// 启动服务默认端口8080err:r.Run()iferr!nil{return}}使用StaticFileFSfuncmain(){// 创建路由r:router.NewHttpRouter()// 指定文件系统的单个静态文件服务r.StaticFileFS(/static/css/index.css,index.css,http.Dir(./font/static/css))// 指定文件系统的单个静态文件服务r.StaticFileFS(/static/js/index.js,index.js,http.Dir(./font/static/js))// 启动服务默认端口8080err:r.Run()iferr!nil{return}}