gin路由

gin路由

服务器

r := gin.Default()

1、 r.Run()
2、http.ListenAndServer(":9000",r)
3、 s:= &http.Server {
	Addr: ":9000",
	Handler: r,
	ReadTimeout: 10*time.Second,
	WriteTimeout: 10*time.Second,
	MaxHeaderBytes: 1<<20,
}
s.ListenAndServer()

路由

1、基本路由

r.GET('/',func)
r.POST()
r.PUT()
r.DELETE()
r.PATCH()
r.HEAD()
r.OPTIONS()

2、传参

r.GET("/goods",func(c *gin.COntext){
	id:= c.Query("id")
    page := c.DefaultQuery("page", "1")
	c.String(200,"id=%s",id)
})
访问 /goods?id=xxx&page=1

r.GET("/goods/:id",func(c *gin.COntext){
	id:= c.Param("id")
	c.String(200,"id=%s",id)
})
访问 /goods/20

3、POST请求获取表单

前端
<form action="/login",method="post">
<input type="text",name="username" />
<input type="password" name="password" />
<input type="submit" value="登录"
</form>

后端
router.GET("/login",func(c *gin.Context){
	c.HTML(200,"login.html",gin.H{})
})
router.POST("/login",func(c *gin.Context){
	username := c.PostForm("username")
	password := c.PostForm("password")
	c.JSON(200,gin.H{
		"username":username,
		"password":password,
	})
})

传值绑定到结构体

type UserInfo struct {
	Username string `json:"username" form:"username"`
	Password string `json:"password" form:"password"`
}
后端
/login?username=xxx&&password=yyy
router.GET("/login",func(c *gin.Context){
	user :=&UserInfo{}
	if err := c.ShouldBind(&user),err==nil{
		c.JSON{200,user}
	}else{
		c.JSON(200,gin.H{
		"err":err.Error(),
		})
	} 
})
router.POST("/login",func(c *gin.Context){
	user :=&UserInfo{}
	if err := c.ShouldBind(&user),err==nil{
		c.JSON{200,user}
	}else{
		c.JSON(200,gin.H{
		"err":err.Error(),
		})
	} 
})



路由分组

新建routes文件夹

文件夹下面分别为adminurl.go apiurl.go url.go

adminurl.go

package routers

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

func AdminRoutersInit(r *gin.Engine) {
	adminRouters := r.Group("/admin")
	{
		adminRouters.GET("/", func(c *gin.Context) {
			c.String(200, "后台首页")
		})
		adminRouters.GET("/user", func(c *gin.Context) {
			c.String(200, "用户列表")
		})
		adminRouters.GET("/article", func(c *gin.Context) {
			c.String(200, "新闻列表")
		})
	}
}
___________________________________________________________
url.go

package routers

import (
	"net/http"

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

func DefaultRoutersInit(r *gin.Engine) {
	defaultRouters := r.Group("/")
	{
		defaultRouters.GET("/", func(c *gin.Context) {
			c.HTML(http.StatusOK, "default/index.html", gin.H{
				"msg": "我是一个msg",
			})
		})
		defaultRouters.GET("/news", func(c *gin.Context) {
			c.String(200, "新闻")
		})
	}
}


__________________________________________________________________
apiurl.go

package routers

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

func ApiRoutersInit(r *gin.Engine) {
	apiRouters := r.Group("/api")
	{
		apiRouters.GET("/", func(c *gin.Context) {
			c.String(200, "我是一个api接口")
		})
		apiRouters.GET("/userlist", func(c *gin.Context) {
			c.String(200, "我是一个api接口-userlist")
		})
		apiRouters.GET("/plist", func(c *gin.Context) {
			c.String(200, "我是一个api接口-plist")
		})
	}

}

_________________________________________________________________________
main.go

package main

import (
	"gindemo/routers"   //引入当前项目目录下的routers目录下的所有文件
	"github.com/gin-gonic/gin"
)

func main() {
	// 创建一个默认的路由引擎
	r := gin.Default()

	routers.AdminRoutersInit(r)

	routers.ApiRoutersInit(r)

	routers.DefaultRoutersInit(r)

	r.Run()
}

gin路由
http://www.jcwit.com/article/506/
作者
Carlos
发布于
2024年4月2日
许可协议