一、gin入门
1、创建go module项目步骤
1、file——》go modeles——创建
2、设置代理:
setting——》go Modules
GOPROXY=https://mirrors.aliyun.com/goproxy/,direct;
3、在go.mod中引入gin
require github.com/gin-gonic/gin v1.6.3/
如果没有安装gin,在引入gin后使用go mod tidy就会自动下载(或者直接下载)
go get -u github.com/gin-gonic/gin
4、创建main.go
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
func main() {
engine := gin.Default()
engine.GET("/helloworld", func(c *gin.Context){
c.String(http.StatusOK, "hello world")
})
//返回JSON格式的数据
engine.GET("/json", func(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
"name": "admin",
"age": 18,
})
})
//返回xml格式的数据
engine.GET("/xml", func(c *gin.Context) {
c.XML(http.StatusOK, gin.H{
"name": "zhangsan",
"age": 19,
})
})
engine.Run()
}
5、运行
在Terminal中输入go run main.go,然后浏览器搜索http://127.0.0.1:8080/helloworld
2、静态文件
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
func main() {
engine := gin.Default()
//加载templates下的模板文件
engine.LoadHTMLGlob("templates/*")
engine.Static("/static", "./static")
engine.GET("/index", func(c *gin.Context) {
c.HTML(http.StatusOK, "index.html", gin.H{
"name": "admin",
"age":18,
"users": []string{
"张三","李四","王二"},
})
})
engine.Run()
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="/static/css/index.css">
</head>
<body>
<h1>index</h1>
<!--获取传过来的值-->
<p>name: {
{.name}}</p>
<p>age: {
{.age}}</p>
<!-- <p>{
{.users}}</p>-->
{
{range .users}}
<p>{
{.}}</p>
{
{end}}
<img src="/static/images/bg2.jpg" alt="">
</body>
</html>
3、请求参数
package main
import (
"fmt"
"github.com/gin-gonic/gin"
"net/http"
)
func main() {
engine := gin.Default()
//使用get的方式:http://127.0.0.1:8080/get?name=zhangsan&age=18
engine.GET("/get", func(c *gin.Context) {
fmt.Println(c.Query("name"))
fmt.Println(c.Query("age"))
c.String(http.StatusOK, "get")
})
//使用post的方式
//如在postman中选择post方式,选择body、form-data输入信息,然后http://127.0.0.1:8080/post
engine.POST("/post", func(c *gin.Context) {
fmt.Println(c.PostForm("name"))
fmt.Println(c.PostForm("age"))
c.String(http.StatusOK, "post")
})
//如:http://127.0.0.1:8080/get_user/12345
engine.GET("/get_user/:id", func(c *gin.Context) {
fmt.Println(c.Param("id"))
c.String(http.StatusOK, "url param")
})
engine.Run()
}
insert into student values
(1,'张三',18),
4、参数绑定
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
type User struct {
Name string `form:"name" binding:"required,len=6"`
Age int `form:"age" binding:"numeric,min=18,max=100"`
}
func main() {
engine := gin.Default()
//http://127.0.0.1:8080/get?name=xxxxxx&age=100
engine.GET("/get", func(c *gin.Context) {
var user User
err := c.ShouldBind(&user)
if err!=nil {
c.String(http.StatusOK, err.Error())
}else{
c.String(http.StatusOK,"name-> %s age=%d", user.Name,user.Age)
}
})
engine.Run()
}
5、上传文件
(1)上传单个文件
<!DOCTYPE html>
<html lang="en"