首页 > 其他分享 >gin框架路由router

gin框架路由router

时间:2023-04-09 22:27:02浏览次数:26  
标签:200 String user router gin 路由

前言:

gin框架中采用的路由库是基于httprouter做的

正文:

 

需要安装postman  发送请求

各种请求方法:

GET(string, ...HandlerFunc)

POST(string, ...HandlerFunc)

DELETE(string, ...HandlerFunc)

PATCH(string, ...HandlerFunc)

PUT(string, ...HandlerFunc)

OPTIONS(string, ...HandlerFunc)

HEAD(string, ...HandlerFunc)

// 匹配所有

Any(string, ...HandlerFunc)

//没有匹配上路由

NoRoute(handlers ...HandlerFunc)

 

路由请求实例1:

输出string类型

c.String(http.StatusOK, "hello index")

 

import (
    "github.com/gin-gonic/gin"
    "net/http"
)

// 实现index方法
func index(c *gin.Context) {
    //输出string
    c.String(http.StatusOK, "hello index")
}
func login(c *gin.Context) {
    c.String(200, "hello post")
}
func puts(c *gin.Context) {
    c.String(200, "hello puts")
}
func deletes(c *gin.Context) {
    c.String(200, "hello deletes")
}
func any(c *gin.Context) {
    c.String(200, "hello any")
}
func main() {
    r := gin.Default()
    r.GET("index", index)         //发送 get请求
    r.POST("login", login)        //发送 post请求
    r.PUT("put", puts)            //发送 put请求
    r.DELETE("delete", deletes)    //发送 delete请求
    r.Any("any", any)          //可接受任意请求

    r.NoRoute(func(c *gin.Context) { //找不到路由进这里
        c.String(200, "没找到的路由...")
    })
    r.Run() //端口 默认 8080
}

 

获取get参数,获取post参数

必选参数

使用 :param 的语法完成必选参数,例如 /user/:ID,即可匹配 /user/60 这个 URI,但不能匹配 /user

 

可选参数

使用 *param 的语法完成可选参数的定义,例如 /user/*ID 可以匹配 /user/60 和 /user

 

获取参数:

使用 gin.Context 对象的 c.Param("param") 来获取参数值

 

 

输出字符串

c.String(200, "id的值为:"+c.Query("id"))

 

GET请求获取参数

c.Query("id")

GET获取参数并设置默认值

c.DefaultQuery("age", "66")

获取所有GET参数

c.Request.URL.Query()

获取get参数实例:

请求地址:http://localhost:8080/shop?id=1234&name=lampol&age=32

    router.GET("shop", func(c *gin.Context) {
        c.String(200, "id的值为:"+c.Query("id")) //输出参数
        c.String(200, "\n")
        c.String(200, "name的值为:"+c.Query("name")) //输出参数
        c.String(200, "\n")
        c.String(200, "age的值为:"+c.DefaultQuery("age", "66")) //输出默认参数
        c.String(200, "\n")
        //获取所有参数
        fmt.Println(c.Request.URL.Query())

        data := c.Request.URL.Query()
        c.String(200, data["id"][0]+"\n")
        c.String(200, data["name"][0]+"\n")
        c.String(200, data["age"][0]+"\n")

        c.JSON(200, data) //输出json格式
    })

获取Post参数实例

获取post的参数

c.PostForm("name")

获取post的参数,并设置默认值

c.DefaultPostForm("age", "46")

    router.POST("login", func(c *gin.Context) {
        c.String(200, c.PostForm("name")+"\n")             //获取name的值
        c.String(200, c.PostForm("passwd")+"\n")           //获取passwd的值
        c.String(200, c.DefaultPostForm("age", "46")+"\n")     //获取默认值

        //获取所有的值
        data := c.Request.PostForm 
        c.JSON(200, data)
    })

路由分组:

分组可以根据模块分组 user goods  order ..

也可以根据版本分组 v1  v2 ...

 

分组语法:

router.Group("user")

路由分组实例1:

router := gin.Default()
//路由分组
user := router.Group("user")
{ //大括号要放到下面来,不然会报错
    user.GET("login", login)
    user.GET("loginout", loginout)
}

    goods := router.Group("goods")
    {
        goods.GET("list", goodsList)
        goods.GET("add", goodsAdd)
    }

    router.Run()

 

路由分组实现MVC架构:

创建目录 controller

创建目录 router

创建router/router.go 管理所有路由

创建 router/userRouter.go 管理 user模块下的路由

创建 controller/user.go 管理路由对应的控制

 

 

 

代码如下:

main.go:
func main() {
    router := router.InitRouter()
    router.Run()
}
router/router.go 
func InitRouter() *gin.Engine {
    //路由文件
    router := gin.Default()
    //用户模块路由
    userRouter(router)
   //商品模块路由
    goodsRouter(router)

    return router
}
router/userRouter.go
func userRouter(r *gin.Engine) {
    r.GET("login", controller.Login)
}
controller/user.go
func Login(c *gin.Context) {
    c.String(200, "hello controller login")
}

路由文章内只能是抛砖引玉,在实际项目中才会更完善

 

完结

 

标签:200,String,user,router,gin,路由
From: https://www.cnblogs.com/ypeih/p/17301243.html

相关文章

  • 后端开发Go语言-Gin框架
    随心记录,内容仅供参考!2023/04/09  gin框架介绍及安装2023/04/09  gin框架路由router......
  • gin框架介绍及安装
    前言:Gin是一个用Go(Golang)编写的web框架。封装比较优雅,API友好,源码注释比较明确,具有快速灵活,容错方便等特点,它是一个类似于martini但拥有更好性能的API框架,由于httprouter,速度提高了近40倍。借助框架开发,不仅可以省去很多常用的封装带来的时间,也有助于团队的编......
  • vue-router
    ###################npminstallvue-router       Vue.use()方法的源代码如下:functioninstall(Vue){//避免重复安装插件if(install.installed&&_Vue===Vue)returninstall.installed=true_Vue=Vue//执行插件的安装方法const......
  • 练习记录- AtCoder Beginner Contest 295(D)
    vp的觉得我的D很聪明所以来写一下(乐D-ThreeDaysAgo题意就是求所有字符出现次数均为偶数的字串数量太笨了所以想了很久我把存在奇数个1当作第2位是2那么当经过了两次1 2^2这个2就变成了02就是第二位就是4...以此类推 所以我遍历一遍字符串求出当前的异或......
  • Vue Router 学习整理
    VueRouter是Vue.js的官方路由。它与Vue.js核心深度集成,让用Vue.js构建单页应用变得轻而易举。功能包括:嵌套路由映射动态路由选择模块化、基于组件的路由配置路由参数、查询、通配符展示由Vue.js的过度系统提供的过渡效果细致的导航控制自动激活CSS类的链接HTML5histo......
  • nginx配置文件及虚拟主机
    最小配置nginx.conf去掉注释字段后剩余的字段#工作进程数量,配置为对应cpu核数量效果最好worker_processes1;events{#每个worker进程能创建的链接数量,默认即可worker_connections1024;}http{#引入响应头的Content-Type值includemime.t......
  • 解决前端启动报错:This is probably not a problem with npm. There is likely additio
    在执行npmrundev运行项目的时候报错:{"os":"darwin","arch":"any"}(current:{"os":"win32","arch":"x64"})npmERR!codeELIFECYCLEnpmERR!errno1npmERR!phantomjs-prebuilt@2.1.16in......
  • Nginx配置文件结构
    Nginx配置文件(conf/nginx.conf)整体分为三部分:*全局块和Nginx运行相关的全局配置*events和网络连接相关的配置*http块代理、缓存、日志记录、虚拟主机配置http全局块Server块Server全局块location块注:http......
  • Nginx
    Nginx介绍:Nginx是一款轻量级的web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。其特点是占有内存小,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx的网站有:百度、京东、新浪、网易、腾讯、淘宝等https://nginx.org/Nginx下载和安装......
  • Nginx的try_files指令详解
    try_files语法:try_filesfile…uri;或 try_filesfile…=code;默认值:无作用域:serverlocation语法解释:官方:Checkstheexistenceoffilesinthespecifiedorderandusesthefirstfoundfileforrequestprocessing;theprocessingisperformedinthecurr......