本项目将使用go语言的gin框架,搭建web端的博客系统,将使用到,MySQL数据库存储博客数据, docker部署项目,项目将用到gin框架的各个功能。
web服务搭建步骤
a、路由引擎初始化
b、静态文件加载
c、解析文件
d、启动路由/路由组
1、路由引擎初始化
import (
"blog_gin/common"
"github.com/gin-gonic/gin"
"html/template"
)
func InitRouter()*gin.Engine{
ru:=gin.Default()
//解析文件之前要加载静态文件‘
ru.Static("/resource","./public/resource")
//应用模板函数 在解析之前加上
ru.SetFuncMap(template.FuncMap{
"isODD": common.IsODD,
"getNextName": common.GetNextName,
"date": common.Date,
"dateDay": common.DateDay,
})
ru.LoadHTMLGlob("./template/*")
return ru
}
2、主界面搭建,主界面用于展示各部分功能,和常规布局
在项目中主要有两种功能的路由,是用于界面展示的和功能服务的路由
模拟单例模式,对两种功能建立结构体
package views
var Html =&HTMLApi{}
//获取各种页面
type HTMLApi struct {
}
上述结构体用于页面的调用,和反馈给前端页面数据使用,用于页面展示的路由将定义为这个结构体的函数。
package api
//view 是获取页面 api就是获取数据对数据的操作
var API = &Api{}
type Api struct {
}
反馈给前端的json数据,对数据操作的函数将绑定在这个结构体函数上。
ru.GET("/", views.Html.Index)
获取主界面:
func (*HTMLApi) Index(c *gin.Context) {
//获取表单
pageStr := c.Param("page")
page := 1
if pageStr != "" {
page, _ = strconv.Atoi(pageStr)
}
//每页显示的数量
pageSize := 10
//去数据库获取需要的数据
pathurl := c.Request.RequestURI
slug := strings.TrimPrefix(pathurl, "/")
var err error
var hr *models.HomeResponse
hr, err = service.GetAllIndexInfo(slug, page, pageSize)
if err != nil {
log.Println(er