Gin框架中的路由分组
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
func main() {
r :=gin.Default()
//创建一个路由组
admin :=r.Group("/admin")
{
admin.GET("/index", func(c *gin.Context) {
c.String(http.StatusOK,"/admin/index")
})
}
r.Run(":8080")
}
参数数据映射
GIn框架支持 json,xml,yaml和url参数进行数据映射,绑定的方法有:BindJSON,``BindXML,BindQuery,BindYAML,BindHeader
可选绑定方法(也就是参数可以没有):
ShouldBind,ShouldBindJSON,ShouldBindXML,ShouldBindQuery,ShouldBindYAML,ShouldBindHeader
参数映射
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
type Login struct{
User string `form:"user" json:"user" xml:"user" yaml:"user" binding:"required"`
Password string `form:"password" json:"password" xml:"password" yaml:"password" binding:"required"`
}
func main() {
r :=gin.Default()
//form参数据绑定
r.POST("/t1", func(c *gin.Context) {
var login Login
//第一种参数form参数
//err :=c.ShouldBind(&login)
//if err != nil {
//c.JSON(http.StatusBadRequest,gin.H{"error":err.Error()})
//}
//第二种参数:接收url里的参数
//err :=c.BindQuery(&login)
//if err != nil {
//c.JSON(http.StatusBadRequest,gin.H{"error":err.Error()})
//return
//}
//第三种接收json格式
//err :=c.BindJSON(&login)
//if err != nil {
//c.JSON(http.StatusBadRequest,gin.H{"error":err.Error()})
//return
//}
//第四种接收xml格式
err :=c.ShouldBindXML(&login)
if err != nil {
c.JSON(http.StatusBadRequest,gin.H{"err":err.Error()})
return
}
c.JSON(http.StatusOK,gin.H{
"user":login.User,
"password":login.Password,
})
})
r.Run(":8080")
}
参数的验证
由于Gin框架里的关于验证方面的文章太少了,Gin框架也是使用了第三方包https://pkg.go.dev/gopkg.in/go-playground/validator.v9
更多的使用方法还是看这里的文档会比较好些
模板输出
这个模板的输出如果和php里的比较,确实有些不咋好用,好在现在基本上都是前后端分离了,所以只需要提供接口就可以了!
模板的操作
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
func main() {
r :=gin.Default()
r.LoadHTMLGlob("templ/*")
r.GET("/index", func(c *gin.Context) {
c.HTML(http.StatusOK,"index.html",gin.H{
"title":"标题123333",
})
})
r.GET("/index2", func(c *gin.Context) {
c.HTML(http.StatusOK,"index2.html",gin.H{
"title":"标题12aaaaad",
})
})
r.Run()
}
对应的模板
{{ define "index.html"}} //这里是标签需要与end标签同时出现
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="renderer" content="webkit">
<title></title>
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="https://cdn.bootcdn.net/npm/html5shiv@3.7.3/dist/html5shiv.min.js"></script>
<script src="https://cdn.bootcdn.net/npm/respond.js@1.4.2/dest/respond.min.js"></script>
<![endif]-->
</head>
<body>
{{.title}}//后台传过来的数据
</body>
</html>
{{ end }} //结束标签
ps
如果有需要的关于编程技术方面的资料,可以在 wx公众号中搜索 北漂老李 来获取你喜欢的数据哦
本文暂时没有评论,来添加一个吧(●'◡'●)