一般来说我们实现api服务器无需资源控制器,因为api一般只需要响应json/xml,但有部分应用比如cms,需要考虑到静态资源服务,这里我们需要使用资源控制器。资源控制器设计需要考虑几个方面
l 资源需要实现缓存,这样可以加快系统访问速度。
l 资源管理器需要支持灵活配置,因为很多资源服务是和nginx服务器反向代理相互整合的,需要考虑易整合性。
l 资源管理需要统一规划。资源有静态的如css、js文件也有动态产生的,如上传后得到的图片文件,因此需要动态规划保证资源的存储空间和访问规则等。
我们可以对gin框架做一些封装,就可以实现强大的资源管理功能
app.properties
#静态资源及映射,如下配置则访问 localhost/assets/a.jpg 则系统将去 asset目录下寻找a.jsp
restgo.static.assets=./asset
#图片资源存放路径访问 localhost/mnt/a.jpg 则系统将去 /data/restgo/mnt目录下寻找a.jsp
restgo.static.mnt=/data/restgo/mnt
#favorite.ico 访问localhost/favorite.ico 则渲染./favorite.ico
restgo.staticfile.favicon.ico=./favicon.ico
这些实际上是通过main函数中的方法实现的
//main.go
for k,v :=range cfg.Static{
router.Static(k, v)
}
for k,v :=range cfg.StaticFile{
router.StaticFile(k, v)
}
其中static本质上是调用golang内置的文件服务,absolotepath是文件夹绝对路径
fileServer := http.StripPrefix(absolutePath, http.FileServer(fs)) fileServer.ServeHTTP(c.Writer, c.Request)
而staticfile方法本质上是调用gin自身实现的GET方法
group.GET(relativePath, handler)
group.HEAD(relativePath, handler)
本文源代码源代码获取地址 https://github.com/winlion/restgo
待提供源代码清单
10.1 restgo后台管理框架
https://github.com/winlion/restgo-admin
10.2 天天任务清单小程序
https://github.com/winlion/dailytask
10.3 工业大数据采集
10.4 restgo cms
10.5 restgo 千人大群
golang实战使用gin+xorm搭建go语言web框架restgo详解1.1 go语言的困境
golang实战使用gin+xorm搭建go语言web框架restgo详解1.2 我要做什么
golang实战使用gin+xorm搭建go语言web框架restgo详解2 框架基本架构
golang实战使用gin+xorm搭建go语言web框架restgo详解3 系统常用配置参数
golang实战使用gin+xorm搭建go语言web框架restgo详解4 路由配置
golang实战使用gin+xorm搭建go语言web框架restgo详解5 控制器C
golang实战使用gin+xorm搭建go语言web框架restgo详解5.2 跳转和重定向
golang实战使用gin+xorm搭建go语言web框架restgo详解5.3 资源控制器
golang实战使用gin+xorm搭建go语言web框架restgo详解5.4 控制器参数绑定
golang实战使用gin+xorm搭建go语言web框架restgo详解5.5 控制器模型绑定
golang实战使用gin+xorm 搭建 go语言web框架restgo搭建详解5.6 控制器参数校验
Golang go语言整合gin+xorm 搭建 web框架restgo搭建详解5.7 控制器数据响应
golang实战使用gin+xorm搭建go语言web框架restgo详解5.9 控制器controller编程
golang实战使用gin+xorm搭建go语言web框架restgo详解6.1 模型M和Orm
golang实战使用gin+xorm搭建go语言web框架restgo详解6.4 推荐编程方式
golang实战使用gin+xorm搭建go语言web框架restgo详解7 视图层V
golang实战使用gin+xorm搭建go语言web框架restgo详解8 关于模板
golang实战使用gin+xorm搭建go语言web框架restgo详解9 session、日志、鉴权
作者简介:胡文林,持续创业者,长期从事技术开源工作。微信号jiepool-winlion