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/