现在的开发模式是后端只提供一份数据,然后不管是移动端还是网页端,如果想要展现出不同的效果,可以自己根据这份数据个性化构建展示效果
下载Gin package
GOPROXY=https://goproxy.cn
go get -u github.com/gin-gonic/gin
引入使用即可
import "github.com/gin-gonic/gin"
//使用Gin框架
func main() {
r := gin.Default() //返回默认的路由引擎
//访问路径以及返回
r.GET("/hello", sayhello)
//启动
//封装了http.ListenAndServe
r.Run(":8080")
}
func sayhello(c *gin.Context) {
c.JSON(200, gin.H{
"message": "Hello Golang",
})
}
REST是客户端和服务器之间进行交互的时候,使用HTTP协议中的四个请求方法代表不同的动作,更多的是一种规范
GET获取资源
POST新建资源
PUT更新资源
DELETE删除资源
r.GET("/book",...)
r.POST("/book",...)
r.PUT("/book",...)
r.DELETE("/book",...)
浏览器默认只能发送GET和POST请求,如果没有通过AJAX的话,那用postman作为测试工具
我们仍然先按照三步走操作
第一步,定义模版文件index.html
posts/index
{
{.title}} //在模版中使用哈希表的键来传参
第二步和第三步,解析模版和渲染模版
func main() {
//创建一个gin模版引擎路由
r := gin.Default()
//解析模版
r.LoadHTMLFiles("./templates/index.tmpl")
//创建并处理GET请求
r.GET("/index", func(c *gin.Context) {//指定路径和handler
c.HTML(http.StatusOK, "index.tmpl", gin.H{ //模版渲染,向模版中传入参数
"title": "shiyivei.com",
})
})
r.Run(":8080") //启动服务
}
渲染多个模版
可以通过define先重命名多个名字一样的模版文件,然后再解析
{
{define "posts/index.tmpl"}} //重命名
posts/index
{
{.title}}
{
{end}} //不要忘了end
解析
//解析模版
r.LoadHTMLFiles("./templates/index.tmpl","templates/users/index.tmpl")
但是,当文件过多时,可以通过指定文件夹的方式加载所有tmpl文件
//解析模版
//r.LoadHTMLFiles("./templates/index.tmpl", "templates/users/index.tmpl")
r.LoadHTMLGlob("templates/**/*")
同样我们也需要多个path和handler来处理
func main() {
//创建一个gin模版引擎路由
r := gin.Default()
//解析模版
//r.LoadHTMLFiles("./templates/index.tmpl", "templates/users/index.tmpl")
r.LoadHTMLGlob("templates/**/*")
//创建并处理GET请求
r.GET("/posts/index", func(c *gin.Context) {
c.HTML(http.StatusOK, "posts/index.tmpl", gin.H{ //模版渲染
"title": "posts/index.tmpl",
})
})
//创建并处理GET请求
r.GET("/users/index", func(c *gin.Context) {
c.HTML(http