编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

Go语言Web框架Gin的知识点汇总(二)

wxchong 2024-08-19 02:27:15 开源技术 15 ℃ 0 评论

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,yamlurl参数进行数据映射,绑定的方法有: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公众号中搜索 北漂老李 来获取你喜欢的数据哦

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表