栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Go gin框架使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Go gin框架使用

1.表单数据

form:前端表单数据名称required:表示字段是必须的

type User struct {
    UserName string  `form: "user_name" binding: "required"`
    Phone    string  `form: "phone" binding: "required"`
    Passwd   string  `form: "password" binding: "required"`
}
2.表单实体绑定(get请求)

query_params参数

package main

import (
	"fmt"
	"log"

	"github.com/gin-gonic/gin"
)

type User struct { 
	UserName string `form:"user_name" binding:"required"`
	PassWD   string `form:"password" binding:"required"`
}

func main() {
	engine := gin.Default()
	engine.GET("/hello", func(ctx *gin.Context) {
		fmt.Println("请求路径:", ctx.FullPath())

		var user User
		err := ctx.ShouldBindQuery(&user)
		if err != nil {
			log.Fatal("err:", err.Error())
            return
		}

		fmt.Println("userName:", user.UserName)
		fmt.Println("Password:", user.PassWD)

		ctx.Writer.Write([]byte("hello, ginn"))
	})

	if err := engine.Run(":8090"); err != nil {
		log.Fatal(err.Error())
	}

}

3.表单实体绑定(post请求)

form-data参数

package main

import (
	"fmt"
	"log"

	"github.com/gin-gonic/gin"
)

type User struct { 
	UserName string `form:"user_name" binding:"required"`
	PassWD   string `form:"password" binding:"required"`
}

func main() {
	engine := gin.Default()
	engine.POST("/hello2", func(ctx *gin.Context) {
		fmt.Println("请求路径:", ctx.FullPath())

		var user User
		err := ctx.ShouldBind(&user)  // post方法绑定实体
		if err != nil {
			log.Fatal("err:", err.Error())
			return
		}

		fmt.Println("userName:", user.UserName)
		fmt.Println("Password:", user.PassWD)

		ctx.Writer.Write([]byte("hello, ginn"))
	})

	if err := engine.Run(":8090"); err != nil {
		log.Fatal(err.Error())
	}

}

 4.表单实体绑定(post请求)

json参数

注意:json格式传递参数时,struct中定义的字段名字与请求参数名称相同,与tag中的form定义无关

package main

import (
	"fmt"
	"log"

	"github.com/gin-gonic/gin"
)

type User struct { 
	UserName string `form:"user_name" binding:"required"`
	PassWD   string `form:"password" binding:"required"`
}

func main() {
	engine := gin.Default()
	engine.POST("/hello3", func(ctx *gin.Context) {
		fmt.Println("请求路径:", ctx.FullPath())

		var user User
		err := ctx.BindJSON(&user) // post方法绑定
        // err := ctx.ShouldBindJSON(&user) // post方法绑定
		if err != nil {
			log.Fatal("err:", err.Error())
			return
		}

		fmt.Println("userName:", user.UserName)
		fmt.Println("Password:", user.PassWD)

		ctx.Writer.Write([]byte("hello, ginn"))
	})

	if err := engine.Run(":8090"); err != nil {
		log.Fatal(err.Error())
	}

}

 

5.返回值(json值)
package main

import (
	"fmt"
	"log"

	"github.com/gin-gonic/gin"
)

type User struct { 
	UserName string `form:"user_name" binding:"required"`
	PassWD   string `form:"password" binding:"required"`
}

type Response struct {
	Code int
	Msg  string
	Data string
}

func main() {
	engine := gin.Default()
	engine.POST("/hello3", func(ctx *gin.Context) {
		fmt.Println("请求路径:", ctx.FullPath())

		var user User
		err := ctx.ShouldBindJSON(&user) // post方法绑定
		if err != nil {
			log.Fatal("err:", err.Error())
			return
		}

		var resp = Response{Code: 200, Msg: "ok", data: ctx.FullPath()}

		ctx.JSON(200, &resp)

	})

	if err := engine.Run(":8090"); err != nil {
		log.Fatal(err.Error())
	}

}
package main

import (
	"fmt"
	"log"

	"github.com/gin-gonic/gin"
)

type User struct { 
	UserName string `form:"user_name" binding:"required"`
	PassWD   string `form:"password" binding:"required"`
}

type Response struct {
	Code int
	Msg  string
	Data string
}

func main() {
	engine := gin.Default()
	engine.POST("/hello3", func(ctx *gin.Context) {
		fmt.Println("请求路径:", ctx.FullPath())

		var user User
		err := ctx.ShouldBindJSON(&user) // post方法绑定
		if err != nil {
			log.Fatal("err:", err.Error())
			return
		}

		//var resp = Response{Code: 200, Msg: "ok", data: ctx.FullPath()}
		//ctx.JSON(200, &resp)
		ctx.JSON(200, map[string]interface{}{
			"code": 1,
			"msg":  "ok",
			"data": ctx.FullPath(),
		})

	})

	if err := engine.Run(":8090"); err != nil {
		log.Fatal(err.Error())
	}

}
6.返回值(html文件)

package main

import (
	"fmt"
	"log"
	"net/http"

	"github.com/gin-gonic/gin"
)

type User struct { 
	UserName string `form:"user_name" binding:"required"`
	PassWD   string `form:"password" binding:"required"`
}

type Response struct {
	Code int
	Msg  string
	Data string
}

func main() {
	engine := gin.Default()

	// 设置html目录
	engine.LoadHTMLGlob("./html/*") // 表示可以使用html文件夹下所有.html文件

	engine.GET("/hello3", func(ctx *gin.Context) {
		fmt.Println("请求路径:", ctx.FullPath())

		ctx.HTML(http.StatusOK, "index.html", nil)

	})

	if err := engine.Run(":8090"); err != nil {
		log.Fatal(err.Error())
	}

}
7.返回值(html文件),模板语法

package main

import (
	"fmt"
	"log"
	"net/http"

	"github.com/gin-gonic/gin"
)

type Response struct {
	Code int
	Msg  string
	Data string
}

func main() {
	engine := gin.Default()

	// 设置html目录
	engine.LoadHTMLGlob("./html/*") // 表示可以使用html文件夹下所有.html文件

	engine.GET("/hello3", func(ctx *gin.Context) {
		fmt.Println("请求路径:", ctx.FullPath())

		ctx.HTML(http.StatusOK, "index.html", gin.H{
			"fullPath": ctx.FullPath(),
			"userName": "zhangsan",
		})

	})

	if err := engine.Run(":8090"); err != nil {
		log.Fatal(err.Error())
	}

}
8.请求静态资源

package main

import (
	"fmt"
	"log"
	"net/http"

	"github.com/gin-gonic/gin"
)

type Response struct {
	Code int
	Msg  string
	Data string
}

func main() {
	engine := gin.Default()

	// 设置html目录
	engine.LoadHTMLGlob("./html/*") // 表示可以使用html文件夹下所有.html文件

	// 设置静态资源目录
	engine.Static("/img", "./imgs") // img:对应前端引用静态资源路径 imgs:对应后端真实静态资源路径

	engine.GET("/hello3", func(ctx *gin.Context) {
		fmt.Println("请求路径:", ctx.FullPath())

		ctx.HTML(http.StatusOK, "index.html", gin.H{
			"fullPath": ctx.FullPath(),
			"userName": "zhangsan",
		})

	})

	if err := engine.Run(":8090"); err != nil {
		log.Fatal(err.Error())
	}

}
9.路由组使用
package main

import (
	"fmt"
	"log"

	"github.com/gin-gonic/gin"
)

type Response struct {
	Code int
	Msg  string
	Data string
}

func main() {
	engine := gin.Default()

	routerGroup := engine.Group("/user")

	// 注册
	routerGroup.POST("/register", func(ctx *gin.Context) {
		fmt.Println("请求路径:", ctx.FullPath())

		ctx.Writer.WriteString("用户注册!")
	})

	// 登录
	routerGroup.POST("/login", func(ctx *gin.Context) {
		fmt.Println("请求路径:", ctx.FullPath())

		ctx.Writer.WriteString("用户登录!")
	})

	// 删除
	routerGroup.DELETE("/:id", func(ctx *gin.Context) {
		fmt.Println("请求路径:", ctx.FullPath())
		userId := ctx.Param("id")
		ctx.Writer.WriteString("用户删除:" + userId)
	})

	if err := engine.Run(":8090"); err != nil {
		log.Fatal(err.Error())
	}

}

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/711270.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号